domanda XmlDocument.SelectNodes
-
09-10-2019 - |
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");
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.