ホームページ > バックエンド開発 > C++ > XML 名前空間は「SelectSingleNode」にどのような影響を与えますか?またノードを正しく選択するにはどうすればよいですか?

XML 名前空間は「SelectSingleNode」にどのような影響を与えますか?またノードを正しく選択するにはどうすればよいですか?

Susan Sarandon
リリース: 2025-01-07 20:59:42
オリジナル
186 人が閲覧しました

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

名前空間を使用した XML のナビゲーション: SelectSingleNode の課題

名前空間を含む XML ドキュメントを操作する場合、.NET の標準の SelectSingleNode メソッドが予期しない動作をする可能性があります。 これは、//Compile のような単純な XPath 式は本質的に名前空間を理解しないためです。

例で説明してみましょう:

<code class="language-xml"><project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <itemgroup>
    <compile include="clsWorker.cs"/>
  </itemgroup>
</project></code>
ログイン後にコピー

<compile> を使用して xmldoc.SelectSingleNode("//Compile") ノードを選択しようとすると、null が返されます。 名前空間宣言 xmlns="http://schemas.microsoft.com/developer/msbuild/2003" が原因です。

解決策: XmlNamespaceManager

の力を活用する

名前空間付き XML 内のノードを正しく選択するための鍵は、XmlNamespaceManager クラスを利用することです。このクラスを使用すると、名前空間プレフィックスとそれに対応する URI を明示的に定義できます。

コードを変更する方法は次のとおりです:

<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>
ログイン後にコピー

XmlNamespaceManager を作成し、名前空間マッピング (指定された URI のプレフィックスとして「msbld」) を追加して、このマネージャーを SelectSingleNode に渡します。 XPath 式 //msbld:Compile は、定義された名前空間内のノードを正しく識別するようになりました。 このアプローチにより、複雑な名前空間を持つ XML 構造でも正確なノード選択が保証されます。

以上がXML 名前空間は「SelectSingleNode」にどのような影響を与えますか?またノードを正しく選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート