0

这是我的 XML

<?xml version="1.0" encoding="ISO8859-1" ?>
<!-- modified from http://www.xmlfiles.com/examples/simple.xml -->
<_breakfastmenu>
<food type="vegetarian">
  <name>Belgian Waffles</name>
  <price>5.95</price>
  <description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
  <calories>650</calories>
</food>
<food type="vegetarian">
  <name>Strawberry Belgian Waffles</name>
  <price>7.95</price>
  <description>light Belgian waffles covered with strawberries and whipped cream</description>
  <calories>900</calories>
</food>
<food type="vegetarian">
  <name>Berry-Berry Belgian Waffles</name>
  <price>8.95</price>
  <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
  <calories>900</calories>
</food>
<food type="vegetarian">
  <name>French Toast</name>
  <price>4.50 </price>
  <description>thick slices made from our homemade sourdough bread</description>
  <calories>600</calories>
</food>

</_breakfastmenu>

我想找到所有包含“Waffles”的食物元素,我可以通过运行这个 XPath 成功地做到这一点:

_breakfastmenu/food/name[contains(text(), "Waffles")] 

但我也想知道这些的价格,正确的方法是什么,我尝试了一段时间没有成功,感谢任何帮助。

谢谢你。

4

2 回答 2

2

XPath 表达式

/_breakfastmenu/food[contains(name, 'Waffles')]/price

将提取您感兴趣的元素。您通常不需要使用text(),因为元素节点的字符串值是其所有后代文本节点的串联。例如,如果您正在查看的元素可能有子元素或多个文本节点

<foo>This is a <i>contrived</i> example</foo>

那么foo元素的字符串值是“这是一个人为的例子”,而foo/text()会给你两个文本节点,“这是一个”和“例子”。根据您使用此节点集的上下文,您最终可能会遍历节点或仅使用第一个节点的值(“这是一个”)。如果您不确定是否需要text(),那么您可能不需要。

于 2013-02-08T13:44:44.580 回答
0

我不是这方面的专家,但这可以吗?

XmlDocument xmlDoc = new XmlDocument();
        xmlDoc.Load("http://localhost:49288/EktronSite2/XMLFiles/Food.xml");//ur xml location
        XmlNodeList nodes = xmlDoc.SelectNodes("_breakfastmenu/food");
        if(nodes != null)
        {
            foreach (XmlNode node in nodes)
            {
                if (node.SelectSingleNode("name").InnerText.Contains("Waffles"))
                {
                    Response.Write(node.SelectSingleNode("name").InnerText+ ":" +node.SelectSingleNode("price").InnerText + "<br><br>");
                }
            }
        }
于 2013-02-08T13:41:37.410 回答