我有一些要解析的XML文件,其中一些是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<ab:rootNode xmlns:ab="http://www.uri.com">
<ab:nodeDate>...</ab:nodeDate>
</ab:rootNode>
和其他人没有命名空间:
<?xml version="1.0" encoding="UTF-8"?>
<rootNode>
<nodeDate>...</nodeDate>
</node>
在LINQ to XML中,我应该精确地命名空间,否则它不会使任何节点变细。
如何管理命名空间?我是否测试xmlns:ab="http://www.uri.com"
元素中是否存在rootNode
?如果它存在,我创建一个XNamespace
并将其添加到这样的名称元素(伪代码):
XNamespace ab = "http://www.uri.com";
string prefixe = String.Empty;
if (XmlNamespaceExists(ab , "rootNode")
{
prefixe = ab;
}
答案 0 :(得分:2)
您可以使用:
XNamespace ns = doc.Root.Name.Namespace;
var dates = doc.Descendants(ns + "nodeDate");
我认为无论是否使用名称空间都应该有效 - 它最终会找到与根元素具有相同名称空间的每个nodeDate
元素。