Il parametro namespace è ovviamente solo una stringa (anche se dichiarato come oggetto) che deve contenere una dichiarazione di namespace XML nel formato "xmlns: aliasname = 'namespace'" (lo stile XML). Ad esempio
xmlDocument.DocumentElement.SelectNodesNS("cb:person",
"xmlns:cb='http://www.addison-wesley.de/codebook'");
opere con un documento XML come questo:
<?xml version="1.0" encoding="utf-8" ?>
<persons xmlns="http://www.addison-wesley.de/codebook">
<person id="1000">
<firstname>Zaphod</firstname>
<lastname>Beeblebrox</lastname>
<type>Alien</type>
</person>
...
</persons>
Nota che l'alias (cb :) è stata utilizzata nel XPath.
Se lo spazio dei nomi non è nello stile XML, si ottiene il famigerato errore COM E_Fail.
L'(scarso) la documentazione di SelectNodesNS dice: "Contiene una stringa che specifica gli spazi dei nomi per l'uso in espressioni XPath quando è necessario definire nuovi spazi dei nomi esternamente namespace sono definite in stile XML, come un elenco separato da spazi. degli attributi di dichiarazione dello spazio dei nomi. Puoi usare questa proprietà anche per impostare lo spazio dei nomi predefinito. "
Secondo tale spazio dei nomi deve essere una stringa e potrebbe contenere più di uno spazio dei nomi XML (non ancora provato). Ancora la domanda è aperta perché è un oggetto.
fonte
2012-11-11 07:07:55
No, non ci sono penalità per le prestazioni. Date un'occhiata a questo [risposta] [1] [1]: http://stackoverflow.com/questions/256859/is-there-a-performance-difference-between-a -for-loop-and-a-per-each-loop –