ich ein XML-Dokument ähnlich den folgenden habe:Mit XmlSerializer mit einem Array in dem Wurzelelement
<scan_details>
<object name="C:\Users\MyUser\Documents\Target1.doc">
...
</object>
<object name="C:\Users\MyUser\Documents\Target2.doc">
...
</object>
...
</scan_details>
ich die System.Xml.Serialization
Attribute zu verwenden ist die Hoffnung, XML-Deserialisierung zu vereinfachen. Das Problem, das ich habe, ist, dass ich nicht herausfinden kann, wie angegeben wird, dass der Wurzelknoten ein Array enthält.
Ich habe versucht, die Schaffung der folgenden Klassen:
[XmlRoot("scan_details")]
public class ScanDetails
{
[XmlArray("object")]
public ScanDetail[] Items { get; set; }
}
public class ScanDetail
{
[XmlAttribute("name")]
public string Filename { get; set; }
}
Allerdings, wenn ich die XML in das ScanDetails
Objekt deserialisieren das Items
Array bleibt null
.
Wie deserialize ich ein Array in einem Stammknoten?
Ah ... Das ist verwirrend terminoligy sie verwenden. Ich hatte mich auf 'XmlArray' und' XmlArrayItem' konzentriert. Dank dafür! –
Wenn ein Array, aber nicht nur unter der Stammebene, dann scheint die Array-Eigenschaft immer noch [XmlArray ("arrayElementName")] und nicht [XmlElement ("arrayElementItemName")], aber unter der Stammebene wie Ihre Antwort es benötigt [XmlElement ("arrayElementItemName")] Weißt du, warum das so ist? Es ist wie auf der Stammebene beschreiben Sie die inneren sich wiederholenden Elementtypen und anderswo den Array-Typ. – CRice
Ich möchte nur einen Moment nehmen, um Ihnen zu danken. Ich habe viele Antworten auf viele Fragen durchforstet und das ist das Einzige, was funktioniert. Es ist so unintuitiv, dass Sie das Array-Attribut weder für das Stammelement noch für das Array-Element definieren müssen. – Gaugeforever