【发布时间】:2017-04-11 10:12:15
【问题描述】:
我有一个基本上如下所示的 XML 文档:
<Item>
<ItemID>1234567890</ItemID>
<ItemSpecifics>
<NameValueList>
<Name>Style</Name>
<Value>mens</Value>
</NameValueList>
<NameValueList>
<Name>UPC</Name>
<Value>123456789</Value>
</NameValueList>
</ItemSpecifics>
</Item>
并且“Item”节点在整个 XML 文档中重复出现,具有多个 ItemID 值和 UPC 值..
我想在这里做的是从每个 Item 节点中提取 ItemID 值,它是 UPC 值。所以输出将是这样的(包含列表或字典):
ItemID UPC
1 598
2 2134
3 9999
等等..
我尝试过这样的事情:
var document = XDocument.Parse(xmlString);
var upcValues = document.Descendants("NameValueList")
.Where(pair => pair.Element("Name").Value == "UPC")
.Select(pair => pair.Element("Value").Value)
.DefaultIfEmpty("n/a");
但这并没有真正实现我想要的,因为我不确定如何从文档中同时提取 ID 和 UPC 值...
有人可以帮帮我吗?
【问题讨论】:
-
请格式化 XML - 很难看到所有元素都在左侧排列的结构。
-
@JonSkeet 我很抱歉,我该怎么做?我以前从未在这里使用过 XML 格式 =( P.S. 我使用 ctrl + K 选项来格式化它
-
嗯,你加空格。格式化 XML 与格式化代码没有什么不同。
-
@JonSkeet 现在好点了吗?
-
好的,非常感谢。
标签: c# asp.net xml linq dictionary