XML序列化C#,重复的节点
这是我的阶级结构XML序列化C#,重复的节点
[Serializable]
public class OrderXML
{
[XmlArray("GROUPLIST")]
public Group[] GroupList { get; set; }
}
[Serializable]
public class Group
{
[XmlArray(ElementName = "GROUP")]
[XmlArrayItem(ElementName = "SELLER", Type = typeof(Seller))]
public Seller[] Sellers { get; set; }
}
它生成的XML是
<GROUPLIST>
<Group>
<GROUP>
<SELLER SELLERREF="1">
...
</SELLER>
<SELLER SELLERREF="2">
...
</SELLER>
</GROUP>
</Group>
<Group>
<GROUP>
<SELLER SELLERREF="1">
...
</SELLER>
<SELLER SELLERREF="2">
...
</SELLER>
</GROUP>
</Group>
</GROUPLIST>
的XML有重复GROUP和集团标签,我想为了消除这一点,我已经检查了StackOverflow中提到的其他答案,但他们不适用于我的情况。请帮助。
我使用的C#
XMLSerialization通过HimBromBeere答案是生成XML
<GROUPLIST>
<Group>
<Sellers>
<SELLER SELLERREF="1">
...
</SELLER>
<SELLER SELLERREF="2">
...
</SELLER>
</Sellers>
</Group>
<Group>
<Sellers>
<SELLER SELLERREF="1">
...
</SELLER>
<SELLER SELLERREF="2">
...
</SELLER>
</Sellers>
</Group>
</GROUPLIST>
我不想<Sellers>
标签有
感谢@Lesmian和@HimBromBree的回答,我摆脱了GROUP重复标记,然后添加了GROUPLIST标记,我在中间添加了另一个类。谢谢所有
public class OrderXML
{
[XmlElement(ElementName = "GROUPLIST")]
public GroupList GroupList { get; set; }
}
public class GroupList
{
[XmlElement(ElementName = "GROUP", Type = typeof(Group))]
public Group[] Groups { get; set; }
}
可以省略从[XmlArray(ElementName = "GROUP")]
和XmlArrayItem
您的成员定义public Seller[] Sellers { get; set; }
并将XmlElement
-attribute添加到数组的定义中:
public class OrderXML
{
[XmlElement("GROUP")]
public Group[] GroupList { get; set; }
}
public class Group
{
[XmlElement(ElementName = "SELLER", Type = typeof(Seller))]
public Seller[] Sellers { get; set; }
}
还可以将此属性添加到您的OrderedXML
-class成员Groups
instzead现有XmlArrayItem
的。 这将以这种方式使层次结构扁平化,使数组立即在<Group>
-tag内出现。
刚刚表明......好的答案。 –
'
HimBromBeere它正在改变组标签,卖家,我想这个标记被完全删除,任何建议 –
我认为,为了做到这一点,你需要指定XMLELEMENT属性而不是xmlarray在组类:
[Serializable]
public class OrderXML
{
[XmlArray("GROUPLIST")]
public Group[] GroupList { get; set; }
}
[Serializable]
public class Group
{
[XmlElement("SELLER", Type = typeof(Seller))]
public Seller[] Sellers { get; set; }
}
这应该删除其他组的标签。在这里你可以找到关于它的详细信息:http://blogs.msdn.com/b/youssefm/archive/2009/06/12/customizing-the-xml-for-collections-with-xmlserializer-and-datacontractserializer.aspx。
您的回答为
@UmairManzoor嗨,试试我的更新回答。它现在应该工作。 – Lesmian
确实有帮助,但我不得不在其间添加另一个班级,谢谢。张贴在 –
是的,我只想在那里有一个组标记,而不是组1 –