如果您不知道与xmlns属性关联的URI的名称,那么查询XML文档的最佳方法是什么?

时间:2013-01-17 02:43:12

标签: c# .net xml xsd xml-namespaces

我不想对URI进行硬编码,然后必须先分配一个前缀,然后才能使用XPath表达式从XML文档中选择节点。是否可以以程序方式检索此信息?

这是唯一的方法吗?

string uri = xml.SelectSingleNode("*").Attributes["xmlns"].Value?

2 个答案:

答案 0 :(得分:3)

我可以建议的唯一好的替代方案(假设你想特别按名称选择节点)是使用local-name()

XmlNode foundNode = xml.SelectSingleNode("/*[local-name() = 'a']/*[local-name() = 'b']/*[local-name() = 'c']");

答案 1 :(得分:0)

您可以查询文档以找出它使用的命名空间。例如,XPath表达式namespace-uri(/ *)将找到用于最外层元素名称的命名空间。