ホームページ > バックエンド開発 > C++ > XDocument を使用して名前空間を持つ XML 要素を効果的にクエリするにはどうすればよいですか?

XDocument を使用して名前空間を持つ XML 要素を効果的にクエリするにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-02 19:31:38
オリジナル
962 人が閲覧しました

How Can I Effectively Query XML Elements with Namespaces using XDocument?

XDocument 内の名前空間を使用した XML の移動

名前空間を含む XML を操作する場合、XDocument での要素のクエリへの影響を考慮することが重要です。デフォルトでは、XDocument 要素は名前空間を考慮せずにクエリされます。これは、提供されている XML の例に示されているように、予期しない結果につながる可能性があります:

<E2ETraceEvent xmlns="http://schemas.microsoft.com/2004/06/E2ETraceEvent">
    <System xmlns="http://schemas.microsoft.com/2004/06/windows/eventlog/system">
       <EventID>589828</EventID>
       <Correlation ActivityID="{00000000-0000-0000-0000-000000000000}" />
    </System>
</E2ETraceEvent>
ログイン後にコピー

このシナリオでは、名前空間が存在するため、次のコードは xEl1 に対して null を返します:

XDocument xDoc = XDocument.Parse(CurrentString);
XElement xEl1 = xDoc.Element("E2ETraceEvent");
ログイン後にコピー

名前空間に関する問題の解決

名前空間を使用して XML を正しくナビゲートするには、 XNamespace クラスを使用します。 XNamespace は、クエリ中に名前空間を指定し、それを要素名と組み合わせる方法を提供します。修正されたコードは次のとおりです。

XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system";
XElement xEl2 = xDoc.Element(nsSys + "System");
ログイン後にコピー

これで、xEl2 には、指定された名前空間を持つ System 要素が含まれるようになります。関連する名前空間を組み込んで、同様に XML ツリーをナビゲートし続けることができます。

追加メモ

  • XML 名前空間は、特に要素と属性を論理的にグループ化するために使用されます。異なるソースからの複数のドキュメントで同様の要素名が使用される場合があります。
  • その場合は、必ず正しい名前空間を指定してください。要素をクエリして正確な結果を取得します。

以上がXDocument を使用して名前空間を持つ XML 要素を効果的にクエリするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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