1

これは私を少し狂わせています。データベース列からXML文字列を取得し、XDocument.Parseを使用してXDocumentを正常に作成しています。xmlツリーをクエリする前にlinqtoxmlを使用しましたが、何らかの理由で、私が行っているすべての処理でnullが返されます。名前空間と関係がありますか?

XDocumentオブジェクトのテキストビジュアライザーのサンプルを次に示します。

// removed XML for privacy reasons

私が試しているクエリの例:

    XElement algorithmId = (from algoId in reportLogXml.Descendants(ALGORITHM_ID)
                            select algoId).FirstOrDefault();

文字列値に定数を使用しており、スペルが一致することを4回チェックし、ドキュメントに明確に含まれているがすべてnullを返すいくつかの異なる要素を試しました。私はここで何が間違っているのですか?

4

1 に答える 1

2

はい、おそらく名前空間に関係していますが、<AlgorithmId>要素には子孫がありません。

次のようにnsの問題を修正できます。

//untested
XNameSpace ns0 = "http://schemas.datacontract.org/2004/07/Adapters.Adapter";
var ns1 = reportLogXml.Root.GetDefaultNamespace();    

// check: ns0 and ns1 should be equal here

... in reportLogXml.Descendants(ns1 + ALGORITHM_ID)

これは特別な+演算子であることに注意してください。形式に正確に従ってください。

于 2012-09-11T20:03:30.423 に答える