0

C#でのプログラミングXml.XpathNodeListオブジェクト「ResultsPartRel.nodeList」を取得しました。Visual Studioでデバッグすると、「結果ビュー;結果ビューを展開するとIEnumerableが列挙されます」と読むことができます。

質問:

1.-これらのノードを読み取るための最良の方法はどれですか?

2.-次のコードをプログラムしましたが、期待した結果が得られません。同じ結果が2回得られます。(ResultsPartRel.nodeListには2つのノードが含まれています)

         List<string> childrenName = new List<string>();

         foreach (XmlElement node in ResultsPartRel.nodeList)
         {
             string nameChildren = node.SelectSingleNode("//related_id/Item/keyed_name").InnerText;
             childrenName.Add(nameChildren);
         }

前もって感謝します。

編集

<related_id>
  <Item>
    <classification>Component</classification>
    <id></id>
    <keyed_name>glass</keyed_name> <!-- I want to get this InnerText -->
    </Item>
</related_id>
<source_id>968C45A47942454DA9B34245A9F72A8C</source_id>
<itemtype>5E9C5A12CC58413A8670CF4003C57848</itemtype>
4

2 に答える 2

1

XMLサンプルと、抽出するデータの口頭での説明を実際に確認する必要があります。現在node.SelectSingleNode(...)、相対パスを選択するように見えるようにしていますが、でnode始まる絶対パスを使用している//ため、同じ結果が2回得られます。

したがって、使用しているXMLに応じて、必要な場合node.SelectSingleNode(".//related_id/Item/keyed_name")もあれば、場合によっては、場合もあります。node.SelectSingleNode("related_id/Item/keyed_name")

于 2012-05-10T10:42:49.490 に答える
0

最初の要素を取得できます。(「//」を使用すると、後続のすべてのタグを検索するため、より多くの結果が得られる可能性があります。)最初の要素が必要な場合は、「// related_id / Item / keyed_name * 1 *」と記述します。

または、正確なパスを記述することもできます(これが最も安全な方法です)。Firefox拡張機能のxPath Checkerを使用すると、要素を右クリックしてXpathを表示するよりもFirefoxにドキュメントをロードできます。次に、正確なパスを取得します。

于 2012-05-10T10:26:59.027 に答える