在C#中从xml流中查找命名空间

时间:2011-05-20 06:25:40

标签: c# xml winforms xml-namespaces

我正在使用一个连续获取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 :(得分:1)

答案 1 :(得分:0)

我最终做的是检索xml流并转换为字符串。然后使用

string.contains("xmlns")

我拆分了标签并使用标签标识符来获取名称空间的值。这对我有用,因为我使用的流中的名称空间没有太大区别。