如何使用或不使用xml命名空间解析文档?
问题描述:
我有一些XML文件解析,其中一些是这样的:如何使用或不使用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
并将其添加到name元素这样的(伪代码):
XNamespace ab = "http://www.uri.com";
string prefixe = String.Empty;
if (XmlNamespaceExists(ab , "rootNode")
{
prefixe = ab;
}
答
你可以使用:
XNamespace ns = doc.Root.Name.Namespace;
var dates = doc.Descendants(ns + "nodeDate");
我认为,应该工作与否名称空间被使用 - 它只是最终找到与根元素具有相同名称空间的每个nodeDate
元素。