这是我关于stackoverflow的第一个问题,所以这会很有趣!
我有以下要转换为xml的结构。我需要包含内部对象中的所有子元素,而不将内部对象作为节点。
class element1
{
element1.1
{
element1.1.1,
element1.1.2,
element1.1.3,
element1.1.4,
}
}
换句话说,如何将其序列化为以下内容?
<element1>
<element1.1.1 />
<element1.1.2 />
<element1.1.3 />
<element1.1.4 />
</element1>
我正在尝试使用xmlelement,XmlIgnore等不同的组合,但直到现在才开始工作。
任何建议都会深表感谢!
这里的代码是:
[XmlElement("Element1")]
public class Element1
{
[XmlElement("Element11")]
public string Element11 {get;set;}
[XmlElement("Element12")]
public Element12 Element12 {get;set;}
}
public class Element12
{
[XmlElement("element121")]
public string element1{get;set;}
[XmlElement("element122")]
public string element2{get;set;}
[XmlElement("element123")]
public string element3{get;set;}
[XmlElement("element124")]
public string element4{get;set;}
}
答案 0 :(得分:1)
你做不到。 XmlSerializer
假设您要序列化的模型与您想要的xml一样粗略。你可以做一些小的调整,但这不是其中之一。如果问题是您的域模型有一个额外的层,那么解决方案很简单: 不要序列化您的域模型 。引入一组新的DTO类,它们仅用于 用于xml序列化,并在序列化之前将数据转换为DTO模型。
答案 1 :(得分:1)
好的,我可以或多或少地明白我需要为xmlserializer制作的pocos。
但是,我想知道为什么不能循环遍历数组/对象列表,并在xml文档中创建对象而不将listname作为实际节点。
一些有效的xml文件是这样制作的,我觉得很奇怪在XmlSerializer类中似乎无法绕过它?