还有一些问题是关于如何使用Xpath查询具有默认名称空间的XML文档。答案是使用名称空间管理器为默认名称空间创建别名,并在xpath中使用该别名。
但是,如果您事先不知道默认名称空间的URI怎么办?如何从XML文档中找到它?
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
来获取它。
我知道这是一个古老的主题,但是我有同样的问题,使用XmlDocument类,因为我想知道默认名称空间和前缀名称空间。
我可以使用相同的方法获得两个名称空间。
string prefixns = element.GetNamespaceOfPrefix("prefix");
string defaultns = element.GetNamespaceOfPrefix("");
这似乎对我在XmlElement上获得两个名称空间有效。
编辑:这是一个XmlNode方法,所以也应该工作在属性最简单的方法
XmlDocument xDoc = new XmlDocument();
xDoc.Load(uriPath);
Console.WriteLine(xDoc.NamespaceURI);