2011-11-21 59 views
1

我有一些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; 
} 

回答

2

你可以使用:

XNamespace ns = doc.Root.Name.Namespace; 
var dates = doc.Descendants(ns + "nodeDate"); 

我认为,应该工作与否名称空间被使用 - 它只是最终找到与根元素具有相同名称空间的每个nodeDate元素。

相关问题