この記事では、LINQ to XML を使用して名前空間を含む XML を処理するときに、不適切な名前空間処理によって生じる結果の違いの問題を回避する方法について説明します。
最初の XML 文字列には名前空間宣言が含まれていますが、2 番目の XML 文字列には名前空間宣言が含まれていません。既定では、LINQ to XML は既定の名前空間を想定しますが、これは XML 構造と一致しません。
LINQ to XML を正しく使用して xmlns
属性を含む XML を処理するには、以下の方法に従ってください:
<code class="language-csharp">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"), }; // 迭代结果 foreach (var element in elements) { Console.WriteLine(element.TheBool); Console.WriteLine(element.TheId); }</code>
この例では、XML の 2 つの名前空間に対応する 2 つの名前空間 ns
と nsa
を定義します。 LINQ クエリで要素を参照する場合、これらの名前空間を要素名の前に追加します。
このアプローチにより、LINQ to XML は、対応する名前空間内の要素を正しく識別してアクセスし、どの XML 文字列が使用されるかに関係なく、一貫した期待どおりの結果を保証します。
以上がXML 名前空間で LINQ to XML を正しく使用するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。