C# 如何从XmlArray获取XmlAttribute?

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

我有这样一个XML字符串:

<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;