这是我的班级结构
Collections.swap(arrayList,2,6);
它正在生成的XML是
[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有重复的 GROUP 和群组标记,我试图删除它,我已经检查了StackOverflow中提到的其他答案,但它们在我的情况下不起作用。请帮助。
我正在使用C#的XMLSerialization
HimBromBeere的答案是生成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>
我不希望<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>
标记在那里
答案 0 :(得分:3)
您可以从In [26]: list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In [27]: list1[1::2] = [x+1 for x in list1[1::2]]
In [28]: list1
Out[28]: [1, 3, 3, 5, 5, 7, 7, 9, 9, 11]
的成员定义中省略[XmlArray(ElementName = "GROUP")]
和XmlArrayItem
,并将public Seller[] Sellers { get; set; }
- 属性添加到数组的定义中:
XmlElement
您还可以将此属性添加到现有public class OrderXML
{
[XmlElement("GROUP")]
public Group[] GroupList { get; set; }
}
public class Group
{
[XmlElement(ElementName = "SELLER", Type = typeof(Seller))]
public Seller[] Sellers { get; set; }
}
的{{1}} - 类成员OrderedXML
个实例中。
这将使层次结构变平,使得数组立即位于Groups
- 标记内。
答案 1 :(得分:1)
我认为为了做到这一点,你需要在Group类中指定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。
答案 2 :(得分:0)
感谢@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; }
}