如何 select 使用 xmlstarlet 的元素下的所有属性?
How to select all attributes under an element using xmlstarlet?
如何使用xmlstarlet
从下面div
得到hrefs
?
<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
,但没有成功。
您可以将 //@href
附加到您的 XPath 表达式以获取它已经 selects:
节点下的所有 @href
属性
//*[@class='my_list']//@href
解释:
您的基本 XPath 非常适合 select 感兴趣的 div
。它通过使用元素通配符 *
绕过为 http://www.w3.org/1999/xhtml
声明命名空间的需要,然后为 @class
指定一个值,这不受 [= 上的默认命名空间声明的影响13=] 感兴趣。
从那里开始,//
selects 沿后代或自身轴——/
将仅 select 沿直接子轴——和 @href
select请求的 href
属性。
如何使用xmlstarlet
从下面div
得到hrefs
?
<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
,但没有成功。
您可以将 //@href
附加到您的 XPath 表达式以获取它已经 selects:
@href
属性
//*[@class='my_list']//@href
解释:
您的基本 XPath 非常适合 select 感兴趣的 div
。它通过使用元素通配符 *
绕过为 http://www.w3.org/1999/xhtml
声明命名空间的需要,然后为 @class
指定一个值,这不受 [= 上的默认命名空间声明的影响13=] 感兴趣。
从那里开始,//
selects 沿后代或自身轴——/
将仅 select 沿直接子轴——和 @href
select请求的 href
属性。