ホームページ > バックエンド開発 > C++ > LINQ to XML を使用して名前空間を含む XML を正しく解析する方法

LINQ to XML を使用して名前空間を含む XML を正しく解析する方法

Linda Hamilton
リリース: 2025-01-19 02:11:13
オリジナル
735 人が閲覧しました

How to Correctly Parse XML with Namespaces Using LINQ to XML?

LINQ to XML での XML 名前空間の処理

名前空間を含む XML データを処理する場合、必要な要素を取得して操作するには、名前空間を適切に処理することが重要です。 LINQ to XML を使用して、名前空間を含む XML を走査する方法は次のとおりです。

提供されるサンプルコード:

<code class="language-csharp">string theXml = @"<Response xmlns=""http://myvalue.com""><Result xmlns:a=""http://schemas.datacontract.org/2004/07/My.Namespace"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><a:TheBool>true</a:TheBool><a:TheId>1</a:TheId></Result></Response>";

XDocument xmlElements = XDocument.Parse(theXml);

var elements = from data in xmlElements.Descendants("Result")
               select new {
                            TheBool = (bool)data.Element("TheBool"),
                            TheId = (int)data.Element("TheId"),
                          };</code>
ログイン後にコピー

XML 文字列で名前空間が使用されている場合、このコードは XML を正しく解析せず、結果として null 値が発生します。この問題を解決するには、LINQ クエリで XML 名前空間を明示的に指定する必要があります。

LINQ クエリで XML 名前空間を定義するには、XNamespace オブジェクトを使用できます。このオブジェクトを使用すると、適切な名前空間プレフィックスと URI を持つ XName インスタンスを作成できます。

以下は修正されたコードです:

<code class="language-csharp">string theXml = @"<Response xmlns=""http://myvalue.com""><Result xmlns:a=""http://schemas.datacontract.org/2004/07/My.Namespace"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""><a:TheBool>true</a:TheBool><a:TheId>1</a:TheId></Result></Response>";

XDocument xmlElements = XDocument.Parse(theXml);
XNamespace ns = "http://myvalue.com";
XNamespace nsa = "http://schemas.datacontract.org/2004/07/My.Namespace";
var elements = from data in xmlElements.Descendants(ns + "Result")
              select new
              {
                  TheBool = (bool)data.Element(nsa + "TheBool"),
                  TheId = (int)data.Element(nsa + "TheId"),
              };</code>
ログイン後にコピー

修正されたコードでは、最初に名前空間 URI を使用して XNamespace オブジェクト nsnsa を宣言します。次に、Descendants クエリと Element クエリで、名前空間プレフィックスを付けて XName を指定します。このようにして、LINQ to XML は、指定された名前空間内の要素を正しく識別してアクセスできます。

以上がLINQ to XML を使用して名前空間を含む XML を正しく解析する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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