如何使用xmlstarlet
从以下hrefs
获取div
?
<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
,但没有成功。
答案 0 :(得分:1)
您可以将//@href
附加到XPath表达式,以获取已选择的节点下的所有@href
个属性:
//*[@class='my_list']//@href
<强>解释强>
您的基础XPath可以选择感兴趣的div
。它绕过了为http://www.w3.org/1999/xhtml
声明名称空间的需要,方法是使用元素通配符*
,然后为@class
指定一个值,该值不受{{div
上的默认名称空间声明的影响感兴趣的。
从那里,//
沿着后代或自我轴选择 - /
只会沿着直接子轴选择 - @href
选择href
要求的属性。