搜索XML中的元素

时间:2011-06-26 09:27:47

标签: c# xml search xml-parsing

我有一个类似的XML文件,我需要搜索其值...就好像例如输入产品名称时应显示相关价格

如果有一种简单的方法而不是解析并按循环搜索值?

<products>
    <product>
      <Name> PRODUCT 1</Name>
      <price>150</price>
    </product>
    <product>
      <Name> PRODUCT 2</Name>
      <price>250</price>
    </product>
    <product>
      <Name> PRODUCT 3</Name>
      <price>300</price>
    </product>
  <products>

2 个答案:

答案 0 :(得分:5)

您可以使用XPath:

XmlDocument doc = new XmlDocument();
doc.Load("myfile.xml");
XmlNode myPrice = doc.SelectSingleNode("/products/product[Name=' PRODUCT 1']/price");
Console.WriteLine(myPrice.InnerText);

输出

150

请注意,产品标识符之前的空格很重要。

如果您愿意,可以使用XPathDocument执行相同的操作:

XPathDocument doc = new XPathDocument("myfile.xml");
XPathNavigator xpath = doc.CreateNavigator();
XPathNavigator myPrice = xpath.SelectSingleNode("/products/product[Name=' PRODUCT 1']/price");
Console.WriteLine(myPrice.ToString());

还输出

150

在.NET 2.0中测试了这两个。

答案 1 :(得分:1)

Linq to Xml是另一种可能的解决方案,可以最大限度地减少对手头任务的处理 有关详细信息,请参阅msdn: http://msdn.microsoft.com/en-us/library/bb387085.aspx