作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在寻找一种使用 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/
我正在为我的应用程序使用 Tank-Auth。我唯一的问题是激活和重置帐户密码。 用于登录、注册、注销;我对这些代码没有问题; $route['login'] = "/auth/login"; $ro
我是一名优秀的程序员,十分优秀!