如何从XmlArray获取XmlAttribute?

问题描述

| 我有这样的XML字符串:
<foo>
  ...
  <barlist id=\"10\">
    <bar ... />
    <bar ... />
    etc..
  </barlist>
</foo>
如何将
barlist
中的
id
反序列化为对象? 我当前执行此操作而不对ID进行序列化/反序列化的代码是这样的:
class FooData{
  [XmlArray(\"barlist\")]
  [XmlArrayItem(\"bar\",typeof(BarData))]
  public List<BarData> Bars;
}
    

解决方法

        尝试将XmlAtribute添加到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:
<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>
以及将xml反序列化为对象的代码:
XmlSerializer serializer = new XmlSerializer(typeof(foo));
XmlReader reader = XmlReader.Create(\"D:\\\\test.xml\");
foo testObj = serialier.Deserialize(reader) as foo;
然后我们有结果