3
我有这个类:清洁XML序列化的层次,递归数据结构
[XmlRoot("menuItem")]
public class MenuItem
{
[XmlAttribute("text")]
public string Text { get; set; }
[XmlAttribute("isLink")]
public bool IsLink { get; set; }
[XmlAttribute("url")]
public string Url { get; set; }
[XmlArray("items", IsNullable = true)]
public List<MenuItem> Items { get; set; }
}
它定义了一个菜单的层次结构。现在,在序列化这个类,输出XML为3级菜单是:
<menuItem xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
text="Tools" isLink="false">
<items>
<MenuItem text="Market" isLink="false">
<items>
<MenuItem text="Market Analyzer" isLink="true" url="/tools/market/analyzer">
<items xsi:nil="true" />
</MenuItem>
</items>
</MenuItem>
<MenuItem text="Banking" isLink="false">
<items>
<MenuItem text="Purchase" isLink="true" url="/buy?type=good">
<items xsi:nil="true" />
</MenuItem>
</items>
</MenuItem>
<MenuItem text="General" isLink="false">
<items>
<MenuItem text="Forecasts" isLink="true" url="/wheather-forcasts?city=la">
<items xsi:nil="true" />
</MenuItem>
</items>
</MenuItem>
</items>
</menuItem>
所以,MenuItem
既是根和子元素。作为根,它被序列化为menuItem
与适当的外壳。但是,作为子元素,它的大小写是不正确的。如何让子串项目在子项目的输出中创建menuItem
而不是MenuItem
。区分大小写在这里对我很重要。
我试图把[XmlElement]
属性类本身,而是得到了以下错误:
Attribute 'XmlArrayItem' is not valid on this declaration type. It is only valid on 'property, indexer, field, param, return' declarations.
另外,我不希望这些默认命名那里,我不希望孩子项目被创建为空元素。最终的XML文件应该与此XML示例一样干净:
<menuItem text='Tools' isLink='false'>
<items>
<menuItem text='Market' isLink='false'>
<items>
<menuItem text='Market Analyzer' isLink='true' url='/tools/market/analyzer' />
</items>
</menuItem>
<menuItem text='Banking' isLink='false'>
<items>
<menuItem text='Purchase' isLink='true' url='/buy?type=good' />
</items>
</menuItem>
<menuItem text='General' isLink='false'>
<items>
<menuItem text='Forecasts' isLink='true' url='/wheather-forcasts?city=la' />
</items>
</menuItem>
</items>
</menuItem>
我应该使用哪些属性?
高兴的是,人们喜欢你是SO马克。谢谢 ;)。 –