Domanda

Qual è la differenza con nodo principale per selezionare e utilizzare oggetto documento per selezionare i nodi? Da che parte è preferito.

Ad esempio,

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");
È stato utile?

Soluzione

In realtà, non ho mai avuto alcuna differenza. E utilizzare solo

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

perché se radice del documento esiste

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

Altri suggerimenti

XPath s 'espressione // corrisponde sempre dalla radice del documento, il risultato sarà essere lo stesso se si inizia dalla radice documento o dalla sua documentElement.

Quindi credo che è meglio utilizzare la sintassi Doc.SelectNodes("//@id"); più breve.

La radice di un documento XML contiene il suo elemento documento, almeno, ma può anche contenere istruzioni e commenti di elaborazione. Per esempio, in questo documento 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 -->

radice ha tre nodi figli, uno dei quali è il suo elemento di livello superiore. In questo caso, in questo modo:

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

e questo:

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

di ritorno completamente diversi risultati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top