Betrachten Sie das folgende XML:Wie verwende ich XPath mit XElement oder LINQ?
<response>
<status_code>200</status_code>
<status_txt>OK</status_txt>
<data>
<url>http://bit.ly/b47LVi</url>
<hash>b47LVi</hash>
<global_hash>9EJa3m</global_hash>
<long_url>http://www.tumblr.com/docs/en/api#api_write</long_url>
<new_hash>0</new_hash>
</data>
</response>
Ich bin für einen wirklich kurzen Weg, um nur den Wert des <hash>
Elements zu erhalten. Ich habe versucht:
var hash = xml.Element("hash").Value;
Aber das funktioniert nicht. Ist es möglich, eine XPath-Abfrage an eine XElement
bereitzustellen? Ich kann es mit den älteren System.Xml
Rahmen tun, wie etwas zu tun:
xml.Node("/response/data/hash").Value
Gibt es so etwas wie dies in einem LINQ-Namespace?
UPDATE:
Nachdem mit diesem monkeying um einige mehr ich einen Weg gefunden zu tun, was ich versuche zu tun: wenn sehen
var hash = xml.Descendants("hash").FirstOrDefault().Value;
Ich würde noch interessieren Hat jemand eine bessere Lösung?
nicht FirstOfDefault() verwenden, In diesem Fall, wenn "hash" nicht gefunden wird, erhalten Sie eine NullReferenceException. Verwenden Sie stattdessen First(), um eine beschreibende Ausnahme zu erhalten. – kaalus
Verwenden Sie First(), wenn Sie erwarten, dass "hash" immer existiert. Ansonsten ist FirstOrDefault() in Ordnung, solange Sie vor dem Zugriff auf die Value-Eigenschaft auf Null prüfen. –