2016-06-08 108 views
2

如何使用xmlstarlet從以下div獲取hrefs如何使用xmlstarlet選擇元素下的所有屬性?

<div xmlns="http://www.w3.org/1999/xhtml" class="my_list"> 
<ul> 
<li><a href="http://mylink1.html" title="title1">this is title 1</a></li> 
<li><a href="http://mylink2.html" title="title2">this is title 2</a></li> 
... 
</ul> 
</div> 

我在我的Mac上嘗試了以下xmlstarlet sel -t -m "//*[@class='my_list']" -v "." myfile.xml,但沒有成功。

回答

1

您可以附加//@href到您的XPath表達式得到它已經選擇的節點下的所有@href屬性:

//*[@class='my_list']//@href 

說明:

你基地的XPath很好的選擇感興趣div 。它繞過了通過使用元素通配符*並指定@class的值來聲明http://www.w3.org/1999/xhtml的名稱空間的需求,該值不受感興趣的div上的默認名稱空間聲明的影響。

從那裏,//沿着後代或自身軸選擇 - /只能沿着直接子軸選擇 - 和@href選擇要求href屬性。

+0

嗨,這適用於我的電腦。在解決問題之前,請您簡單解釋一下使用的格式?爲什麼'''而不只是'@ href'? – mrb

+0

答案根據要求更新瞭解釋。 – kjhughes

相關問題