2011-11-21 58 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元素。

相關問題