2010-06-16 82 views
2

我正在嘗試使用XDocument和XPathEvaluate從woot.com提要中獲取值。我正在處理其他命名空間,但這個例子給我帶來了問題。如何使用XDocument.XPathEvaluate處理空名稱空間?

 <rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"> 
     <channel>  
     <category text="Comedy" xmlns="http://www.itunes.com/dtds/podcast-1.0.dtd"> 
</category> 
<!-- this is a problem node, notice 'xmlns=' --!> 

所以我試試這個:

XmlNamespaceManager man = new XmlNamespaceManager(nt); 
    man.AddNamespace("ns", "http://www.w3.org/2000/xmlns/"); 
// i've also tried man.AddNamespace("ns", string.Empty); 
    xDocument.Namespace = man; 
    var val = xDocument.XPathEvaluate("/rss/channel/ns:category/@text", xDocument.Namespace); 

VAL總是空。我使用ns:來自VS 2010 XPath Navigator插件的建議。有關如何處理這個問題的任何想法?

+0

什麼是'xdwn.Namespace'?在提供的代碼中未定義xdwn。 – 2010-06-16 21:09:19

+0

@Dimitre Novatchev - 應該是xDocument,我編輯了這個問題。感謝您檢查我的問題。 – Aligned 2010-06-16 21:44:44

回答

5

元素category位於命名空間http://www.itunes.com/dtds/podcast-1.0.dtd中。它不是一個空的名字空間。它只是在輸入XML中沒有給出前綴。

man.AddNamespace("ns", "http://www.itunes.com/dtds/podcast-1.0.dtd"); 
... 
xDocument.XPathEvaluate("/rss/channel/ns:category/@text", xDocument.Namespace); 
2
man.AddNamespace("ns", "http://www.w3.org/2000/xmlns/"); 

以下是錯誤:綁定到錯誤的命名空間。

必須是:

man.AddNamespace("ns", "http://www.itunes.com/dtds/podcast-1.0.dtd");