我的情况非常具体,我是xmlstarlet的初学者。
我有一个如下所示的 XML 文件,其中包含数百个条目。
<netbooks>
<file id="2">
<date>2008-06-04 16:40</date>
<author>Daniel</author>
<name bytes="422904" hash="383a39b183">New name of - Just an example.pdf</nome>
<name bytes="383135" hash="5a43dc3524">Just an example.pdf</nome>
</file>
</netbooks>
其中root = 上网本标签。
问题
- 我有文件哈希
5a43dc3524
,我想获取日期值,即2008-06-04 16:40
。做到这一点最简单的方法是什么? - 另外,如何从文件元素中获取属性
id
(即2
)?再说一遍,我有哈希值,就这样。
我们可以使用 xpath 表达式获取日期
//file[name/@hash="5a43dc3524"]/date/text()
。假设该文件data.xml
包含您问题中的示例数据,如果我们运行:我们得到输出:
该表达式的
//file[name/@hash="5a43dc3524"]/date/text()
意思是“查找包含属性值为 的元素<file>
的所有元素。对于每个元素,获取所包含元素的值并返回其文本值。<name>
hash
5a43dc3524
<file>
<date>
我们可以做一些非常类似的事情: