从 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()来检查其中任何一个是否通过,但它不起作用。
这些链接可能很有用:
快速检测 Xml 命名空间
使用包含冒号/命名空间的元素解析 XML
如何从 XmlDocument 中选择具有 XML 命名空间的 XML 节点?
我最后做的是检索 xml 流并转换为字符串。然后使用
string.contains("xmlns")
我拆分了标签并使用标签标识符来获取命名空间的值。这对我有用,因为我使用的流中的命名空间不会有太大区别。