我怎么能在同一个类XmlArrayAttributes重新分组命名不同?



我必须按如下方式反序列化一个XML对象:

<programs>
<item0></item0>
<item1></item1>
...
<item200></item200>
</programs>

事实上,每个<item></item>的结构是相同的,所以我想在同一个c#类中重新组合所有这些项目,看起来像这样:

public class Item{
public object prop1{get; set; }
public object prop2{get; set; }
public object prop3{get; set; }
}

代替这个,现在我在c#中使用这个结构:

[XmlRoot(ElementName="programs")]
public class Programs { 

[XmlElement(ElementName="item0")] 
public Item0 Item0 { get; set; } 

[XmlElement(ElementName="item1")] 
public Item1 Item1 { get; set; } 

[XmlElement(ElementName="item2")] 
public Item2 Item2 { get; set; }

...

[XmlElement(ElementName="item200")] 
public Item200 Item200 { get; set; }
}

如果有人能帮助我,我将非常感激!

使用LINQ可以将XML转换为所需的输出

假设给定的xml是这种格式

<programs>
<item0 attribute1="0">
<property1>test1</property1>
</item0>
<item1 attribute1="1">
<property1>test2</property1>
</item1>
<item200 attribute1="2">
<property1>test3</property1>
</item200>
</programs>

有一个带有已定义元素的Item类

public class Items
{
public string id { get; set; }
public string property1 { get; set; }
public string attribute1 { get; set; }
}

使用LINQ可以过滤所有项目并创建所需的对象

var xdoc = XDocument.Parse(strFile);
var result = xdoc.Descendants().Where(x=>x.Name.LocalName.StartsWith("item")).Select(y=> new Items() {
id = y.Name.LocalName.Replace("item",""),
property1 = y.Element("property1").Value,
attribute1 = y.Attribute("attribute1").Value
});

相关内容

  • 没有找到相关文章

最新更新