2009-08-17 70 views
0

所以我有這個簡單的XML文本:LINQ 2 XML:簡單的輸入,腦屁有了解決方案

<errors xmlns="http://schemas.google.com/g/2005"> 
    <error> 
    <domain>GData</domain> 
    <code>InvalidRequestUriException</code> 
    <internalReason>You must specify at least one metric</internalReason> 
    </error> 
</errors> 

什麼來提取internalReason元素的值最簡單的方法?

回答

6

您需要在查找子代時指定命名空間。例如:

var xml = XElement.Load("test.xml"); 
XNamespace ns = "http://schemas.google.com/g/2005"; 
var reason = xml.Descendants(ns + "internalReason").First().Value; 

或者:

var xml = XElement.Load("test.xml"); 
XNamespace ns = "http://schemas.google.com/g/2005"; 
var reason = xml.Elements(ns + "error").First() 
       .Elements(ns + "internalReason").First().Value; 

(我不熱衷於使用查詢表達式時,他們真的不提供任何額外的價值)

您可能還需要將其拆分並使用FirstOrDefault,以便您可以檢查所請求的元素是否存在。

+0

是的,這是命名空間。謝謝。 – 2009-08-17 16:42:08