ich unter XML-Datei haben:lesen sich wiederholende Blöcke mit XmlReader C#
<PackList>
<Header>
<OrderNumber>PO12123</OrderNumber>
<OrderQty>100</OrderQty>
</Header>
<Items>
<Item>
<PN>31023312</PN>
<Color>Black</Color>
</Item>
<Item>
<PN>22023312</PN>
<Color>White</Color>
</Item>
<Item>
<PN>44023312</PN>
<Color>Blue</Color>
</Item>
</Items>
</PackList>
Ich bin in der Lage, die Header
Teil mit folgenden Code zu lesen:
public class OrderItem
{
public string PN { get; set; }
public string Color { get; set; }
}
public class PList
{
public string OrderNumber { get; set; }
public int OrderQty { get; set; }
public List<OrderItem> OrderItems = new List<OrderItem>();
}
(...)
PList PL = new PList();
using (XmlReader reader = XmlReader.Create(@"c:/Test/PackList.xml"))
{
reader.ReadToFollowing("OrderNumber");
PList.OrderNumber = reader.ReadElementContentAsString();
reader.ReadToFollowing("OrderQty");
PList.OrderQty = reader.ReadElementContentAsInt();
}
(...)
Aber ich habe keine Ahnung, wie man lesen Sie alle Item
innerhalb des Tags Items
.
Irgendwelche Ratschläge?
Linq (von Xml zu DTO) ist viel einfacher als XmlReader. Ist das Quelldokument riesig? Oder kannst du das ganze XML in den Speicher laden? Wenn ja, siehe diesen Beitrag: http://stackoverflow.com/questions/18498467/parent-children-xml-to-dto-object-model-with-linq – granadaCoder
Es könnte sehr groß sein. – Somebody
Ich benutze meine Antwort wie folgt. Ich verwende eine Kombination aus XmlReader und Xml Linq. http://stackoverflow.com/questions/37503602/efficient-parsing-of-xml/37503653#37503653 – jdweng