1

入力パラメーターと等しい値を持つ特定のノードを取得しようとしています。私の xpath は次のようなもので、b は必要なノードです。

string xpath = "/Batches/Measurement/Batch[market=someval]/b";

<?xml version="1.0" encoding="utf-8" ?>
<Batches>
  <Measurement>
    <Batch>
      <market>someval</market>
      <b>someval</b>
    </Batch>
  </Measurement>
</Batches>

var xmlNode = xmlDoc.SelectNodes(xpath);

返されるノードは常に 0 をカウントしません。xmldoc が適切にロードされていることを確認しました。

4

2 に答える 2

4

xpath はほぼ完璧です。const 値はアポストロフィで囲む必要があることに注意してください。

"/Batches/Measurement/Batch[market='someval']/b"

更新: C# コード例:

 XmlNodeList nodeList;
 nodeList = root.SelectNodes("/Batches/Measurement/Batch[market='someval']/b");
  foreach (XmlNode node in nodeList)
  {
      for (int i = 0; i < node.ChildNodes.Count; i++)
      {
          Console.WriteLine(node.ChildNodes[i].InnerText);
      }       
  }

SelectNodes の戻り値は nodeList です。それを繰り返す必要があります。

そしてもう少し短く:

      XmlElement root = doc.DocumentElement;
      string text;
      text = root.SelectSingleNode("/Batches/Measurement/Batch[market='someval']/b").InnerText;
      Console.WriteLine(text);
于 2013-05-08T21:45:56.453 に答える