我正在寻找一种使用xmlstarlet从我的xml中提取和打印元素的方法; 例如,如果我的xml是
<?xml version="1.0" encoding="ISO-8859-1"?>
<bookstore>
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="eng">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
Run Code Online (Sandbox Code Playgroud)
我想打印出价格= 29.99的book元素:
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
Run Code Online (Sandbox Code Playgroud)
我理解选择这样一个元素的xpath查询(/bookstore/book[price=29.99)但我无法在stdout上打印/转储它.如果我使用'-v'选项并使用-v(.)我没有得到我想要的输出(包含其中的所有标签)我只是得到文本值.应该有一种简单地转储所选元素的方法,这就是我要找的东西.
谢谢你的期待.
Cum*_*yah 18
使用"-c"(复制)选项,应该实现您的目标:
xmlstarlet sel -t -c "/bookstore/book[price=29.99]" books.xml
<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>
Run Code Online (Sandbox Code Playgroud)
您可以通过在"sel"之后添加全局"-C"开关来观看xmlstarlet内部生成的XSLT.这显示了复制选项如何导致xslt copy-of构造:
...
<xsl:template name="t1">
<xsl:copy-of select="/bookstore/book[price=29.99]"/>
</xsl:template>
...
Run Code Online (Sandbox Code Playgroud)
这导致包含命名空间节点,子节点和属性节点,参见 XSLT规范(参见w3schools摘要).
| 归档时间: |
|
| 查看次数: |
18197 次 |
| 最近记录: |