Heim > Backend-Entwicklung > C++ > Wie wirkt sich der XML-Namespace auf „SelectSingleNode' aus und wie kann ich Knoten richtig auswählen?

Wie wirkt sich der XML-Namespace auf „SelectSingleNode' aus und wie kann ich Knoten richtig auswählen?

Susan Sarandon
Freigeben: 2025-01-07 20:59:42
Original
231 Leute haben es durchsucht

How Does XML Namespace Affect `SelectSingleNode` and How Can I Correctly Select Nodes?

Navigieren in XML mit Namespaces: Die SelectSingleNodeHerausforderung

Beim Arbeiten mit XML-Dokumenten, die Namespaces enthalten, kann sich die Standardmethode SelectSingleNode in .NET unerwartet verhalten. Dies liegt daran, dass ein einfacher XPath-Ausdruck wie //Compile Namespaces nicht von Natur aus versteht.

Lassen Sie es uns anhand eines Beispiels veranschaulichen:

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

Der Versuch, den Knoten <compile> mit xmldoc.SelectSingleNode("//Compile") auszuwählen, gibt null zurück. Die Namespace-Deklaration xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ist der Übeltäter.

Die Lösung: Die Kraft von XmlNamespaceManager

nutzen

Der Schlüssel zur korrekten Auswahl von Knoten innerhalb von Namespace-XML liegt in der Verwendung der Klasse XmlNamespaceManager. Mit dieser Klasse können Sie Namespace-Präfixe und die entsprechenden URIs explizit definieren.

So können Sie Ihren Code ändern:

<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

Wir erstellen ein XmlNamespaceManager, fügen eine Namespace-Zuordnung hinzu („msbld“ als Präfix für den angegebenen URI) und übergeben diesen Manager dann an SelectSingleNode. Der XPath-Ausdruck //msbld:Compile identifiziert den Knoten jetzt korrekt innerhalb des definierten Namespace. Dieser Ansatz gewährleistet eine genaue Knotenauswahl auch in komplexen XML-Strukturen mit Namensraum.

Das obige ist der detaillierte Inhalt vonWie wirkt sich der XML-Namespace auf „SelectSingleNode' aus und wie kann ich Knoten richtig auswählen?. 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