xmldocument.selectnodes質問
-
09-10-2019 - |
質問
ルートノードを使用してドキュメントオブジェクトを選択してノードを選択する違いは何ですか?どちらの方法が望ましい。
例えば、
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()");
まったく異なる結果を返します。
所属していません StackOverflow