我需要将一些XML序列化为一个对象。我无法控制XML的结构,所以我坚持这种情况。结构类似于这个例子:
<A>
<B>Elements that are the stuff of B</B>
<C>Stuff about the stuff in B</C>
<B>Different stuff</B>
<C>Stuff about the different stuff</C>
<C>Some more stuff about the different stuff</C>
<B>Weird stuff</B>
<C>Stuff about the Weird Stuff</C>
<C>Still more stuff about the Weird Stuff</C>
<D>New thing that goes with the Weird Stuff</D>
<B>Things</B>
<C>Stuff about Things</C>
</A>
我希望将此序列化为一个维护兄弟结构信息的对象。
public class A
{
public List<BCD> BCD {get; set;}
}
public class BCD
{
public B Bfield {get; set;}
public List<C> Cfield {get; set;}
public D Dfield {get; set;}
}
public class B
{
// class details
}
public class C
{
// class details
}
public class D
{
// class details
}
当我尝试这个时,它不起作用。有什么办法可以使用XMLSerializer维护该结构吗?
答案 0 :(得分:0)
因此,我一直在寻找解决方案并提出这个并不是我想要的。此类结构保留集合中兄弟元素的顺序,但不创建表示兄弟节点的离散组的对象。
public class A
{
[XmlElementAttribute("B", typeof(B))]
[XmlElementAttribute("C", typeof(C))]
[XmlElementAttribute("D", typeof(D))]
public List<object> BCD {get; set;}
}
public class B
{
// class details
}
public class C
{
// class details
}
public class D
{
// class details
}
最终结果是BCD是B,C,D对象按照它们出现在XML中的顺序的集合。
答案 1 :(得分:-1)
您可以尝试以下步骤:
希望这会有所帮助..