首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于属性的xmlstarlet选择值

基于属性的xmlstarlet选择值
EN

Stack Overflow用户
提问于 2020-03-24 21:57:25
回答 1查看 379关注 0票数 1

使用以下file.xml:

代码语言:javascript
复制
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<config>
 <index type="I8">
  <book>2</book>
 </index>
</config>

我不能用选择书

代码语言:javascript
复制
xmlstarlet sel --template --match /config/index[@type="I8"] -c . file.xml

我不能用选择书

代码语言:javascript
复制
xmlstarlet sel --template --match /config/index[@type='I8'] -c . file.xml

I 可以用

代码语言:javascript
复制
xmlstarlet sel --template --match "/config/index[@type='I8']" -c . file.xml

I 可以用

代码语言:javascript
复制
xmlstarlet sel --template --match '/config/index[@type="I8"]' -c . file.xml

此外,如果xml中的类型是type="8“,则可以使用选择它:

代码语言:javascript
复制
xmlstarlet sel --template --match /config/index[@type="8"] -c . file.xml

为什么?

代码语言:javascript
复制
xmlstarlet 1.6.1
compiled against libxml2 2.9.4, linked with 20904
compiled against libxslt 1.1.29, linked with 10129
EN

回答 1

Stack Overflow用户

发布于 2020-04-07 06:21:51

这个程序可以工作(在Windows和Ubuntu上进行测试):

代码语言:javascript
复制
xmlstarlet sel -t -i /config/index/@type=\"I8\" -m //book -c . -b file.xml

它与引用有关,在查看下一个语句的输出时,您可以看到为什么:

代码语言:javascript
复制
xmlstarlet sel -C --template --match /config/index[@type="I8"] -c . file.xml

它的输出:

代码语言:javascript
复制
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
  <xsl:output omit-xml-declaration="yes" indent="no"/>
  <xsl:template match="/">
    <xsl:for-each select="/config/index[@type=I8]">
      <xsl:copy-of select="."/>
    </xsl:for-each>
  </xsl:template>
</xsl:stylesheet>

I8中缺少引号。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60839966

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档