Heim > Backend-Entwicklung > C++ > Wie verwende ich SelectSingleNode in C#, um XML-Elemente mit Namespaces abzurufen?

Wie verwende ich SelectSingleNode in C#, um XML-Elemente mit Namespaces abzurufen?

Barbara Streisand
Freigeben: 2025-01-07 20:53:10
Original
949 Leute haben es durchsucht

How Do I Use SelectSingleNode in C# to Retrieve XML Elements with Namespaces?

Verwenden von SelectSingleNode zur Verarbeitung von XML-Namespaces in C#

Ein häufiges Problem beim Zugriff auf XML-Elemente mit SelectSingleNode besteht darin, dass möglicherweise Null zurückgegeben wird, wenn das Tag einen XML-Namespace enthält. Dieses Problem tritt auf, weil SelectSingleNode standardmäßig nur Elemente im Standard-Namespace berücksichtigt.

Betrachten Sie die bereitgestellte Beispiel-XML-Struktur:

<code class="language-xml"><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><itemgroup><compile include="clsWorker.cs"></compile></itemgroup></project></code>
Nach dem Login kopieren

Wenn Sie dieses XML in XmlDocument laden und versuchen, das „Compile“-Element abzurufen:

<code class="language-csharp">XmlDocument xmldoc = new XmlDocument();
xmldoc.LoadXml(Xml);

XmlNode node = xmldoc.SelectSingleNode("//Compile"); // 返回null</code>
Nach dem Login kopieren

Das Ergebnis ist null, da sich das Element „Compile“ in „https://www.php.cn/link/55a51239dc6fe8cf8c09ec91f36f5250 befindet.

Lösung: Verwenden Sie XmlNamespaceManager

Um dieses Problem zu lösen, müssen wir XmlNamespaceManager verwenden, um den richtigen Namespace anzugeben, wenn wir den SelectSingleNode-Vorgang ausführen:

<code class="language-csharp">XmlNamespaceManager ns = new XmlNamespaceManager(xmldoc.NameTable);
ns.AddNamespace("msbld", "http://schemas.microsoft.com/developer/msbuild/2003");
XmlNode node = xmldoc.SelectSingleNode("//msbld:Compile", ns);</code>
Nach dem Login kopieren

XmlNamespaceManager ermöglicht es uns, das Namespace-Präfix „msbld“ einem tatsächlichen Namespace-URI zuzuordnen. Mit diesem Ansatz können wir nun das „Compile“-Element mithilfe der geänderten SelectSingleNode-Syntax erfolgreich abrufen.

Das obige ist der detaillierte Inhalt vonWie verwende ich SelectSingleNode in C#, um XML-Elemente mit Namespaces abzurufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage