найти пространство имен из потока XML в C # - PullRequest
1 голос
/ 20 мая 2011

У меня есть приложение, которое непрерывно получает поток XML и затем использует его для обработки некоторой информации. Пока у меня было только одно пространство имен для всех потоков, и я сделал это легко, как

doc = new XPathDocument(ds + "/probe");
navigator = doc.CreateNavigator();
ns = new XmlNamespaceManager(navigator.NameTable);
ns.AddNamespace("m", "urn:namsp.org:namSpDev:1.1");                       
nodes = navigator.Select("//m:DataItem", ns);
while (nodes.MoveNext())
{
     node = nodes.Current;                    
}

Но теперь у меня проблема. Есть еще один поток, который имеет пространство имен

"urn:namsp.org:namSpDev:1.2"

Так что в моем приложении я должен проверить поток и посмотреть, какое это пространство имен, и только тогда я могу добавить пространство имен приложения, используя

    ns.AddNamespace("m", "urn:namsp.org:namSpDev:1.1");      

Как мне это сделать?

Я попытался преобразовать doc.toString () и использовал .contains (), чтобы проверить, проходит ли что-нибудь из этого, но это не работает.

Ответы [ 2 ]

0 голосов
/ 23 мая 2011

Что я наконец-то сделал, так это извлек поток XML и преобразовал его в строку. Затем с помощью

string.contains("xmlns")

Я разделил тег и использовал идентификатор тега, чтобы получить значение пространства имен. Это работает для меня, так как не будет большой разницы в пространствах имен в потоке, который я использую.

...