パートナー企業から受け取った比較的複雑な xml メッセージがあります。それを使用するには、xml を解析する必要があります。私はそれを正常に動作させましたが、その後、メッセージが全体的に変更され、SelectSingleNode コマンドが機能しなくなりました。
メッセージの構造。xml ドキュメントが埋め込まれた CDATA オブジェクトに注意してください。これが重要かどうかはわかりません。dataContent オブジェクトをピンセットで取り出すことができたので、違いはありません。XmlDocument に読み込んでいるものは次のとおりです。
<ns5:dataContent xmlns:ns2="http://test/common/v1"
xmlns="http://test/schema/common"
xmlns:ns4="http://test/credentialing/stuff/v1"
xmlns:ns3="http://test/schema/ims/common/v1"
xmlns:ns5="http://test/schema/v1">
<createdBy>Micky</createdBy>
<createdAt>2011-03-08T17:00:27.050-05:00</createdAt>
<ns5:Id>39</ns5:Id>
<ns5:Type>4</ns5:Type>
-- lots more data --
</ns5:dataContent>
私のコードはかなり簡単です
var xmlDoc = new XmlDocument();
xmlDoc.Load(new StringReader(CDATA content));
var xmlNsM = new XmlNamespaceManager(xmlData.NameTable);
xmlNsM.AddNamespace(String.Empty, @"http://test/schema/common\");
xmlNsM.AddNamespace("ns5", @"http://test/schema/v1\");
xmlNsM.AddNamespace("m", @"http://test/message/v1\");
//This works
var order = xmlDoc.ChildNodes[0];
//This returns null
var ID = order.SelectSingleNode("ns5:Id", xmlNsM);
xmlDoc が正しく読み込まれていることがわかります。6 つの名前空間すべてを xmlNsM に追加しようとしましたが、同じ結果が得られました。私の SelectSingleNodes はどれも今は機能しません。
この件に関して私が見つけたすべての投稿は、名前空間マネージャーを使用するように言っていますが、私はすでにそれを知っていたので、あまり生産的な午後ではありませんでした.