【发布时间】:2016-06-02 15:11:48
【问题描述】:
我有以下 xml 文件:
<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>
我可以使用以下代码读取Header 部分:
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();
}
(...)
但我不知道如何读取Items 标记中的每个Item。
有什么建议吗?
【问题讨论】:
-
Linq(从 Xml 到 DTO)比 XmlReader 容易得多。源文件很大吗?或者您可以将整个 xml 加载到内存中吗?如果是这样,请参阅此帖子:stackoverflow.com/questions/18498467/…
-
我在发帖后使用喜欢我的答案。我使用 XmlReader 和 Xml Linq 的组合。 stackoverflow.com/questions/37503602/efficient-parsing-of-xml/…