用XPath提取內容?

c# dom html-agility-pack xml xpath

我有html內容,我將其存儲為XML文檔(使用HTML Agility Pack)。我知道一些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”和“Circles T-shirt - Navy”的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選擇它 - 而不是//html

您的主要問題是在表達式中您使用\\\並且XPath中沒有此類運算符。您嘗試使用的正確XPath運算符是///縮寫。




許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因