空のクエリ結果を引き起こす LINQ to XML の XML 名前空間の問題を解決します
この記事では、LINQ to XML を使用して XML 名前空間を含む XML データを処理するときにクエリ結果が null を返す問題について説明します。 このコードは XML からデータを抽出するように設計されていますが、名前空間の不適切な使用によりクエリは失敗します。
LINQ to XML の Descendants
メソッドと Element
メソッドは XName
パラメーターを受け取ります。 XName
オブジェクトの代わりに文字列を直接使用すると、自動的に変換できますが、エラーが発生しやすくなります。 この問題を解決するには、要素名の文字列表現 XNamespace
を使用する前に、
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"), };
Descendants
は ns
メソッドで使用され、Element
は nsa
メソッドで使用されることに注意してください。 名前空間を明示的に定義すると、ターゲット要素が正しいことを確認できるため、Descendants
が null を返す問題が解決されます。
以上がXML 名前空間を使用すると、LINQ to XML クエリが Null を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。