Rozważmy następujący xml:Jak korzystać z XPath z XElement lub 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>
szukam naprawdę krótkim sposób uzyskać tylko wartość elementu <hash>
. Próbowałem:
var hash = xml.Element("hash").Value;
Ale to nie działa. Czy jest możliwe dostarczenie zapytania XPath do XElement
? Mogę to zrobić ze starszą System.Xml
ram, robiąc coś takiego:
xml.Node("/response/data/hash").Value
Czy istnieje coś takiego w obszarze nazw LINQ?
UPDATE:
Po monkeying wokół z tego kilka znalazłem sposób, aby zrobić to, co usiłuję zrobić:
var hash = xml.Descendants("hash").FirstOrDefault().Value;
bym nadal być zainteresowani, aby zobaczyć, czy ktoś ma lepsze rozwiązanie?
Nie używaj FirstOfDefault() w w tym przypadku, ponieważ jeśli "hash" nie zostanie znaleziony, otrzymasz wyjątek NullReferenceException. Zamiast tego użyj opcji First(), a otrzymasz bardziej opisowy wyjątek. – kaalus
Użyj First(), jeśli spodziewasz się, że "hash" zawsze istnieje. W przeciwnym razie FirstOrDefault() jest w porządku, o ile sprawdzisz wartość null przed uzyskaniem dostępu do właściwości Value. –