XPathでコンテンツを抽出しますか?

c# dom html-agility-pack xml xpath

質問

私はXML文書(HTMLアジリティパックを使用して)として保存しているhtmlコンテンツを持っています。私はいくつかのXPathを知っていますが、私は必要な正確なコンテンツをゼロにすることはできません。

下の私の例では、大きなイメージから "src"と "alt"テキストを抽出しようとしています。これは私の例です:

<html>
<body>
   ....
   <div id="large_image_display">
      <img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
   </div>
   ....
   <div id="small_image_display">
      <img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
   </div>
</body>
</html>

"images / KC0763_l.jpg"と "サークルTシャツ - ネイビー"を取得するXPathは何ですか?これは私がどれくらい得るかですが、それは間違っています。この時点ではほとんどの疑似コード:

<html>
<body>
   ....
   <div id="large_image_display">
      <img class="photo" src="images/KC0763_l.jpg" alt="Circles t-shirt - Navy" />
   </div>
   ....
   <div id="small_image_display">
      <img class="photo" src="images/KC0763_s.jpg" alt="Circles t-shirt - Navy" />
   </div>
</body>
</html>

この権利を得るための助けとなることを大変感謝しています。

受け入れられた回答

次のxpathはimgタグのsrc属性を取得します:

'//html/body/div/img[@class="photo"]/@src'

同様に、alt属性に移動します:

'//html/body/div/img[@class="photo"]/@src'

そこから属性テキストを取得できます。 'large_image_display'と一致するものだけを見つけたい場合は、これをさらにフィルタリングします:

'//html/body/div/img[@class="photo"]/@src'

人気のある回答

次のXPath式を使用します

/html/body/div[@id='large_image_display']/img/@src

そして

/html/body/div[@id='large_image_display']/img/@src

非常に非効率な評価(全体(サブ)ツリーをスキャンさせる)をもたらす可能性があるため、常に // 省略形 を使用しないようにしてください

この特定のケースでは、 html要素がドキュメントの一番上の要素であることがわかります。単に/html - not //html選択することができます。

あなたの主な問題は 、あなたの式では\\\を使っていて、XPathにそのような演算子がないということでした。あなたが使用しようとしていた事業者である正しいXPathの///略語。




ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ