ホームページ >バックエンド開発 >C++ >C# を使用して名前空間を持つ XML ノードを選択する方法

C# を使用して名前空間を持つ XML ノードを選択する方法

Linda Hamilton
Linda Hamiltonオリジナル
2025-01-07 20:27:41603ブラウズ

How to Select XML Nodes with Namespaces Using C#?

C# で名前空間を持つ XML ノードを選択するときに問題が発生しました

次の構造の名前空間を含む XML ドキュメントを考えてみましょう:

<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>

名前空間を指定せずに SelectSingleNode メソッドを使用して Compile ノードを取得しようとすると、null が返されます。

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

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

解決策: XmlNamespaceManager を使用します

ルート要素に名前空間がある場合に Compile ノードを正しく取得するには、XmlNamespaceManager:

を使用する必要があります。
<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>

名前空間マネージャーを追加し、正しい名前空間プレフィックス (この場合は「msbld」) を指定すると、SelectSingleNode メソッドは必要なノードを正常に見つけて返します。

以上がC# を使用して名前空間を持つ XML ノードを選択する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。