从c#中的XML文档中找出默认的名称空间URI

本文关键字:默认 URI 空间 中的 XML 文档 | 更新日期: 2023-09-27 18:11:53

还有一些问题是关于如何使用Xpath查询具有默认名称空间的XML文档。答案是使用名称空间管理器为默认名称空间创建别名,并在xpath中使用该别名。

但是,如果您事先不知道默认名称空间的URI怎么办?如何从XML文档中找到它?

从c#中的XML文档中找出默认的名称空间URI

var doc = XDocument.Parse(myXml);
XNamespace ns = doc.Root.GetDefaultNamespace();

如果您正在使用XmlDocument,您可以通过检查根元素的NamespaceURI来获得默认名称空间:

var document = new XmlDocument();
document.LoadXml("<root xmlns='http://java.sun.com/xml/ns/j2ee'></root>");
var defaultNamespace = document.DocumentElement.NamespaceURI;
Assert.IsTrue(defaultNamespace == "http://java.sun.com/xml/ns/j2ee");

您可以尝试使用XmlNamespaceManager.DefaultNamespace来获取它。

http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.defaultnamespace.aspx

我知道这是一个古老的主题,但是我有同样的问题,使用XmlDocument类,因为我想知道默认名称空间和前缀名称空间。

我可以使用相同的方法获得两个名称空间。

string prefixns = element.GetNamespaceOfPrefix("prefix");
string defaultns = element.GetNamespaceOfPrefix("");

这似乎对我在XmlElement上获得两个名称空间有效。

编辑:这是一个XmlNode方法,所以也应该工作在属性

最简单的方法

XmlDocument xDoc = new XmlDocument();
xDoc.Load(uriPath);
Console.WriteLine(xDoc.NamespaceURI);