【发布时间】:2014-04-14 21:49:45
【问题描述】:
我有一个 XML 文件,它返回包含颜色的产品列表和每种颜色的库存。对于特定产品(即 PL-0223)仅按颜色返回库存的最佳方法是什么?
这是数据。
<Part fpartno="0019">
<Color colorname="Nickel">
<ValueAmt>
<Values Qty= "12101" Date ="ATP" Type= "Avail"/>
<Values Qty= "12101" Date= "Total" Type="Total"/>
</ValueAmt>
</Color>
</Part>
<Part fpartno="0223">
<Color colorname="White">
<ValueAmt>
<Values Qty= "0" Date ="ATP" Type= "Avail"/>
<Values Qty= "0" Date= "Total" Type="Total"/>
</ValueAmt>
</Color>
<Color colorname="Yellow">
<ValueAmt>
<Values Qty= "0" Date ="ATP" Type= "Avail"/>
<Values Qty= "0" Date= "Total" Type="Total"/>
</ValueAmt>
</Color>
</Part>
我已经看到了使用 Linq to SQL 和 XmlReader 的示例,但我还没有找到一个好的解决方案来循环遍历子树/子节点。
我尝试过的示例。
XmlReader 方法。我似乎无法弄清楚如何获取子元素。
using(XmlReader r = XmlReader.Create(URLString))
{
while(r.Read())
{
if((r.NodeType == XmlNodeType.Element) && (r.Name == "Part"))
{
if(r.HasAttributes)
{
if(r.GetAttribute("fpartno") == "0019")
{
using (XmlReader cr = r.ReadSubtree())
{
Console.WriteLine(cr.Name)
}
}
}
}
}
}
我也试过 XDoc
XDocument xdoc = XDocument.Load(URLString);
foreach (XElement element in xdoc.Descendants("Values"))
{
Console.WriteLine(element);
}
但似乎无法弄清楚如何仅获取“0019”的颜色。
【问题讨论】:
-
请不要只求我们为您解决问题。向我们展示您如何尝试自己解决问题,然后向我们确切地展示结果是什么,并告诉我们您为什么觉得它不起作用。请参阅“What Have You Tried?”了解您真正需要阅读的优秀文章。
-
我添加了编辑。我是 XML 解析的新手,因此缺乏详细的帖子,因此似乎没有收到反对票。
标签: c# xml linq xmlreader xelement