如何 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 属性。