Bei der Auswahl von XML-Knoten mit Namespaces in C# sind Probleme aufgetreten
Stellen Sie sich ein XML-Dokument vor, das Namespaces mit der folgenden Struktur enthält:
<code class="language-xml"><?xml version="1.0" encoding="utf-8"?><project defaulttargets="Build" toolsversion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"><itemgroup><compile include="clsWorker.cs"></compile></itemgroup></project></code>
Wenn Sie versuchen, einen SelectSingleNode
-Knoten mit der Methode Compile
abzurufen, ohne einen Namespace anzugeben, wird null zurückgegeben:
<code class="language-csharp">XmlDocument xmldoc = new XmlDocument(); xmldoc.LoadXml(Xml); XmlNode node = xmldoc.SelectSingleNode("//Compile"); // 返回null</code>
Lösung: Verwenden Sie XmlNamespaceManager
Um den Knoten Compile
korrekt abzurufen, wenn das Wurzelelement einen Namespace hat, sollte XmlNamespaceManager
verwendet werden:
<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>
Durch das Hinzufügen eines Namespace-Managers und die Angabe des richtigen Namespace-Präfixes (in diesem Fall „msbld“) kann die Methode SelectSingleNode
den erforderlichen Knoten erfolgreich finden und zurückgeben.
Das obige ist der detaillierte Inhalt vonWie wähle ich XML-Knoten mit Namespaces mithilfe von C# aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!