C# 如何从XmlArray获取XmlAttribute?
我有这样一个XML字符串:C# 如何从XmlArray获取XmlAttribute?,c#,.net,xml,xml-serialization,C#,.net,Xml,Xml Serialization,我有这样一个XML字符串: <foo> ... <barlist id="10"> <bar ... /> <bar ... /> etc.. </barlist> </foo> 尝试添加到id对象 更新:我正在添加示例,说明如何对其进行反序列化 课程: [XmlType(AnonymousType=true)] [XmlRoot(Namespace="", IsNullable=fal
<foo>
...
<barlist id="10">
<bar ... />
<bar ... />
etc..
</barlist>
</foo>
尝试添加到id对象
更新:我正在添加示例,说明如何对其进行反序列化
课程:
[XmlType(AnonymousType=true)]
[XmlRoot(Namespace="", IsNullable=false)]
public class foo {
[XmlElement("barlist")]
public List<fooBarlist> barlist { get; set; }
}
[XmlType(AnonymousType=true)]
public class fooBarlist {
[XmlElement("bar")]
public List<fooBarlistBar> bar { get; set; }
[XmlAttribute()]
public byte id { get; set; }
}
[XmlType(AnonymousType=true)]
public class fooBarlistBar {
[XmlAttribute()]
public byte number { get; set; }
[XmlAttribute()]
public string value { get; set; }
}
然后我们得到了结果
这是办不到的。XML序列化将集合视为纯集合-它忽略属性。可能与-1重复:不,即使拼写正确也不行。@约翰·桑德斯:我更新了答案并添加了测试示例-它对我有效。为什么在所有名称的末尾都有
属性
?你知道你可以不说了,对吧?你的意思是,如果他想改变他的课程,那么他可以做到吗?我只是想展示一下如何做到这一点。我可能是错的,我的答案对用户来说可能是无用的,但它的建议。
[XmlType(AnonymousType=true)]
[XmlRoot(Namespace="", IsNullable=false)]
public class foo {
[XmlElement("barlist")]
public List<fooBarlist> barlist { get; set; }
}
[XmlType(AnonymousType=true)]
public class fooBarlist {
[XmlElement("bar")]
public List<fooBarlistBar> bar { get; set; }
[XmlAttribute()]
public byte id { get; set; }
}
[XmlType(AnonymousType=true)]
public class fooBarlistBar {
[XmlAttribute()]
public byte number { get; set; }
[XmlAttribute()]
public string value { get; set; }
}
<foo>
<barlist id="1">
<bar number="1" value="Hi" />
<bar number="2" value="Hello" />
</barlist>
<barlist id="2">
<bar number="3" value="Bye" />
<bar number="4" value="Bye bye" />
</barlist>
</foo>
XmlSerializer serializer = new XmlSerializer(typeof(foo));
XmlReader reader = XmlReader.Create("D:\\test.xml");
foo testObj = serialier.Deserialize(reader) as foo;