从 C# 中的 XML 流中查找命名空间

本文关键字:查找 命名空间 XML 中的 | 更新日期: 2023-09-27 17:56:56

我有一个应用程序,它可以连续获取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()来检查其中任何一个是否通过,但它不起作用。

从 C# 中的 XML 流中查找命名空间

这些链接可能很有用:

快速检测 Xml 命名空间

使用包含冒号/命名空间的元素解析 XML

如何从 XmlDocument 中选择具有 XML 命名空间的 XML 节点?

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

string.contains("xmlns")

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