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>

「ワッフル」を含むすべての食品要素を見つけたいのですが、次の 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()ですが、「これは " と " の例です」という 2 つのテキスト ノードが表示されます。このノード セットを使用しているコンテキストに応じて、ノードを繰り返し処理するか、最初のノードの値 ("This is a ") を使用することになる場合があります。必要かどうかわからない場合は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 に答える