2016-06-08 107 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

相关问题