Как получить XmlAttribute из XmlArray? - PullRequest
0 голосов
/ 31 мая 2011

У меня есть такая XML-строка:

<foo>
  ...
  <barlist id="10">
    <bar ... />
    <bar ... />
    etc..
  </barlist>
</foo>

Как получить id из barlist при десериализации этого объекта?

Мой текущий код для выполненияэто без сериализации / десериализации идентификатора это:

class FooData{
  [XmlArray("barlist")]
  [XmlArrayItem("bar",typeof(BarData))]
  public List<BarData> Bars;
}

1 Ответ

1 голос
/ 31 мая 2011

Попробуйте добавить XmlAtribute к идентификатору объекта.

ОБНОВЛЕНИЕ : Я добавляю пример, как вы можете десериализовать его ...

Классы:

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

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

и тогда мы получим результат

result

...