其他一些问题已经询问如何使用Xpath查询具有默认命名空间的XML文档。答案是使用命名空间管理器为默认命名空间创建别名,并在xpath中使用该别名。
但是,如果您事先不知道默认命名空间的URI,该怎么办?你如何从XML文档中找到它?
答案 0 :(得分:13)
var doc = XDocument.Parse(myXml);
XNamespace ns = doc.Root.GetDefaultNamespace();
答案 1 :(得分:3)
如果您使用的是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");
答案 2 :(得分:0)
您可以尝试使用XmlNamespaceManager.DefaultNamespace
来获取它。
http://msdn.microsoft.com/en-us/library/system.xml.xmlnamespacemanager.defaultnamespace.aspx
答案 3 :(得分:0)
我知道这是一个古老的话题,但我遇到了同样的问题,使用XmlDocument类,因为我想知道默认命名空间和带前缀的命名空间。
我可以使用相同的方法获得两个名称空间。
string prefixns = element.GetNamespaceOfPrefix("prefix");
string defaultns = element.GetNamespaceOfPrefix("");
这似乎对我在XmlElement上获取两个名称空间都有用。
编辑:这是一个XmlNode方法,所以也应该在属性
上工作答案 4 :(得分:0)
最简单的方法
XmlDocument xDoc = new XmlDocument();
xDoc.Load(uriPath);
Console.WriteLine(xDoc.NamespaceURI);