У меня относительно сложное xml-сообщение, полученное от компании-партнера.Мне нужно разобрать XML, чтобы использовать его.У меня все работало нормально, затем они изменили сообщение повсюду, и теперь ни одна из моих команд SelectSingleNode не работает.
Структура сообщения.Обратите внимание на объект CDATA со встроенным XML-документом.Не уверен, что это важно или нет.Мне удалось выкрутить объект 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 сейчас не работает.
В каждом сообщении, которое я нашел на эту тему, говорится, что нужно просто использовать менеджер пространства имен, но я уже знал, что это не очень продуктивный день.