2

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

例えば、

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");
4

3 に答える 3

1

実際、私は何の違いもありませんでした。そして、

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

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

bool b = Doc.OuterXml == Doc.DocumentElement.OuterXml; // true
于 2010-11-13T09:31:13.110 に答える
1

XPathの式は常にドキュメントルートから一致するため//、ドキュメントルートから開始する場合でも、ドキュメントルートから開始する場合でも結果は同じになりますdocumentElement

Doc.SelectNodes("//@id");したがって、短い構文を使用した方がよいと思います。

于 2010-11-13T09:33:42.297 に答える
1

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()");

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

于 2010-11-13T21:53:36.337 に答える