Ich versuche XML in ein Array von Elementen zu deserialisieren.Wie man einen XML-Knoten von wiederholten Elementen serialisiert
Hier ist der XML:
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<items>
<item>
<name>John</name>
</item>
<item>
<name>Jane</name>
</item>
</items>
Und meine Klasse:
[XmlRoot("item")]
public class Item
{
[XmlElement("name")]
public string Name { get; set; }
}
ich dann deserialisieren:
var xmlSerializer = new XmlSerializer(typeof(Item[]), new XmlRootAttribute("items"));
using (TextReader textReader = new StringReader(xmlString))
{
var items = (Item[])xmlSerializer.Deserialize(textReader);
var itemCount = items.Length;
}
ItemCount 0 (es sollte 2).
Es gibt eine ähnliche Lösung hier: https://stackoverflow.com/questions/15544517 aber es scheint nur zu funktionieren, wenn die XML-Knotennamen identisch mit den Klassennamen sind (meine unterscheiden sich in Groß- und Kleinschreibung).
Was muss ich ändern, um sicherzustellen, dass alle Artikel deserialisiert werden?
Ich habe gemanaged, um Ihre Lösung früher zur Arbeit zu bringen. Leider brauche ich das Objekt zurück zu einem Array/Liste/Sammlung usw. Ich möchte in der Lage sein, nur Elemente zu haben. Länge – openshac
Ich bin nicht sicher zu verstehen, in meiner Antwort werden Sie eine Liste/Array von "Name" haben: foreach (var Element in items.Item) {Response.Write (item.Name); } wird zurückkehren ==> John, Jane – Yanga
Lassen Sie mich versuchen und klären. Ich möchte in der Lage sein, die folgende Aussage zu schreiben: foreach (var item in items). Ähnlich dieser Lösung: https://stackoverflow.com/questions/15544517 – openshac