1. ホーム
  2. .net

[解決済み] XPathをXElementやLINQと一緒に使うには?

2023-06-20 10:47:30

質問

次のようなXMLを考えてみましょう。

<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>

の値だけを取得する本当に短い方法を探しています。 <hash> 要素の値だけを取得する本当に短い方法を探しています。私は試してみました。

var hash = xml.Element("hash").Value;

しかし、これではうまくいきません。XPathクエリを XElement ? 私は、古い System.Xml フレームワークで、次のようなことをします。

xml.Node("/response/data/hash").Value

LINQの名前空間にこのようなものがあるのでしょうか?


UPDATEです。

さらにいろいろやっているうちに、私がやろうとしていることを実行する方法を見つけました。

var hash = xml.Descendants("hash").FirstOrDefault().Value;

私はまだ誰かがより良い解決策を持っている場合、見てみたいと思います?

どのように解決するのですか?

LINQ to XMLでXPathを使用するには、XPathを使用するための宣言を追加します。 System.Xml.XPath の拡張メソッドをもたらします。 System.Xml.XPath.Extensions の拡張メソッドをスコープに入れます。

あなたの例では

var value = (string)xml.XPathEvaluate("/response/data/hash");