gpt4 book ai didi

xml - 使用 xmlstarlet 提取和转储元素

转载 作者:数据小太阳 更新时间:2023-10-29 01:39:59 24 4
gpt4 key购买 nike

我正在寻找一种使用 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>

我想打印出 price = 29.99 的 book 元素:

<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>

我理解选择这样一个元素的 xpath 查询 (/bookstore/book[price=29.99]) 但是我无法在标准输出上打印/转储它。如果我使用 '-v' 选项并使用 -v (.) 我没有得到我想要的输出(其中包含所有标签)我只得到文本值。应该有一种方法可以简单地按原样转储所选元素,而这正是我正在寻找的。

感谢期待。

最佳答案

使用“-c”(复制)选项,应该可以实现您想要的:

xmlstarlet sel -t -c "/bookstore/book[price=29.99]" books.xml

<book>
<title lang="eng">Harry Potter</title>
<price>29.99</price>
</book>

你可以通过在“sel”后添加全局“-C”开关来观看xmlstarlet内部生成的XSLT。这显示了复制选项如何导致 xslt 复制构造:

...
<xsl:template name="t1">
<xsl:copy-of select="/bookstore/book[price=29.99]"/>
</xsl:template>
...

这导致 namespace 节点、子节点和属性节点被包含在内,cf。 XSLT 规范 (see w3schools summary) .

关于xml - 使用 xmlstarlet 提取和转储元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1890690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com