質問

ルートノードを使用してドキュメントオブジェクトを選択してノードを選択する違いは何ですか?どちらの方法が望ましい。

例えば、

1.

XmlDocument Doc = new XmlDocument();
Doc.Load(mem);

XmlNodeList nodeList = Doc.SelectNodes(@"//@id");

2.

XmlDocument Doc = new XmlDocument();
Doc.Load(mem);

XmlElement root = Doc.DocumentElement;

XmlNodeList nodeList = root.SelectNodes(@"//@id");
役に立ちましたか?

解決

実際、違いはありませんでした。そして、ただ使用してください

Doc.SelectNodes(@"//@id");

ドキュメントのルートが存在する場合

bool b = Doc.OuterXml == Doc.DocumentElement.OuterXml; // true

他のヒント

以来 xpath's // 式は常にドキュメントルートから一致します。結果は、ドキュメントルートから開始するか、 documentElement.

だから、あなたは短い方を使う方が良いと思います Doc.SelectNodes("//@id"); 構文。

XMLドキュメントのルートには、少なくともドキュメント要素が含まれていますが、処理の指示とコメントも含まれている場合があります。たとえば、このXMLドキュメントで:

<!-- This is a child of the root -->
<document_element>
   <!-- This is a child of the document element -->
<document_element>
<!-- This is also a child of the root -->

ルートには3つの子ノードがあり、そのうちの1つはトップレベルの要素です。この場合、これ:

XmlNodeList comments = doc.SelectNodes("comment()");

この:

XmlNodeList comments = doc.DocumentElement.SelectNodes("comment()");

まったく異なる結果を返します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top