ホームページ バックエンド開発 C++ 名前空間を含む XML 要素をクエリするときに NullPointerExceptions を回避するにはどうすればよいですか?

名前空間を含む XML 要素をクエリするときに NullPointerExceptions を回避するにはどうすればよいですか?

Jan 05, 2025 pm 01:39 PM

How to Avoid NullPointerExceptions When Querying XML Elements with Namespaces?

XDocument での XML 名前空間の処理

名前空間を含む XML ドキュメントを操作する場合、要素をクエリすると null 値が返される場合があります。これは、XML 名前空間が適切に処理されていない場合に発生する可能性があります。

次の 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}"><!--Value to be extracted-->
            <VirtualPath>/Service.svc</VirtualPath>
        </Correlation>
    </System>
</E2ETraceEvent>
ログイン後にコピー

Correlation 要素をクエリしてその ActivityID を抽出しようとする次のコードがあるとします。属性値:

XDocument xDoc = XDocument.Parse(xmlString);
XElement xEl1 = xDoc.Element("E2ETraceEvent");
XElement xEl2 = xEl1.Element("System");
XElement xEl3 = xEl2.Element("Correlation");  // NullPointerException can occur here
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value;
ログイン後にコピー

名前空間を処理せずにこのコードを実行すると、xEl3 の null 参照が返されます。 Element() メソッドは、名前空間を考慮せずに、名前に一致する要素を検索します。これを解決するには、名前空間をクエリに組み込む必要があります。

XNamespace nsSys = "http://schemas.microsoft.com/2004/06/windows/eventlog/system";
XElement xEl2 = xDoc.Element(nsSys + "System");
XElement xEl3 = xEl2.Element(nsSys + "Correlation");
XAttribute xAtt1 = xEl3.Attribute("ActivityID");
String sValue = xAtt1.Value;
ログイン後にコピー

XNamespace クラスを使用して名前空間を表すことにより、Element() メソッドは名前空間内の要素を正しく識別できます。この例では、nsSys は System 要素の名前空間を表します。

要約すると、名前空間を含む XML ドキュメントを扱うときは、要素のクエリ中に null 参照を避けるために名前空間を適切に処理することが重要です。 XNamespace クラスを使用し、それを Element() メソッドに組み込むことで、要素とその属性に正確にアクセスできます。

以上が名前空間を含む XML 要素をクエリするときに NullPointerExceptions を回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

c言語関数形式文字ケース変換手順 c言語関数形式文字ケース変換手順 Mar 03, 2025 pm 05:53 PM

c言語関数形式文字ケース変換手順

GULC:Cライブラリはゼロから構築されています GULC:Cライブラリはゼロから構築されています Mar 03, 2025 pm 05:46 PM

GULC:Cライブラリはゼロから構築されています

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか? Mar 03, 2025 pm 05:52 PM

C言語関数によって返される値の種類は何ですか?返品値を決定するものは何ですか?

C標準テンプレートライブラリ(STL)はどのように機能しますか? C標準テンプレートライブラリ(STL)はどのように機能しますか? Mar 12, 2025 pm 04:50 PM

C標準テンプレートライブラリ(STL)はどのように機能しますか?

C言語関数の定義と呼び出しルールは何ですか、そして C言語関数の定義と呼び出しルールは何ですか、そして Mar 03, 2025 pm 05:53 PM

C言語関数の定義と呼び出しルールは何ですか、そして

メモリに保存されているC言語関数の返品値はどこにありますか? メモリに保存されているC言語関数の返品値はどこにありますか? Mar 03, 2025 pm 05:51 PM

メモリに保存されているC言語関数の返品値はどこにありますか?

明確な使用法とフレーズ共有 明確な使用法とフレーズ共有 Mar 03, 2025 pm 05:51 PM

明確な使用法とフレーズ共有

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか? Mar 12, 2025 pm 04:52 PM

STL(ソート、検索、変換など)のアルゴリズムを効率的に使用するにはどうすればよいですか?

See all articles