找不到包含>的XMLStarlet的标签

问题描述 投票:0回答:1

我正在使用bash脚本中的XMLStarlet来基本上根据该文件中git上的更改来查找特定的XML节点。这工作正常,直到我们点击一​​个需要搜索的节点,其中包含>作为其值的一部分。我想要查找的节点示例:

<?xml version="1.0" encoding="UTF-8"?>
<CustomLabels xmlns="http://soap.sforce.com/2006/04/metadata">
    <labels>
        <fullName>Button_Value_Get_Data</fullName>
        <categories>Button Value</categories>
        <language>en_US</language>
        <protected>false</protected>
        <shortDescription>Value for Button to get Data</shortDescription>
        <value>&gt; GET VEHICLE DATA</value>
    </labels>
</CustomLabels>

这是我正在运行的命令:

xmlstarlet sel -N x="http://soap.sforce.com/2006/04/metadata" -t -c "//x:labels[x:value/text()=\"&gt; GET VEHICLE DATA\"]/x:fullName" -n myFile.xml

当需要搜索的值不包含&gt;时,同样的命令很有用。有没有办法能够搜索到这个?或者这是xmlstarlet限制?谢谢。

bash xmlstarlet
1个回答
1
投票

&gt;>的编码。如果在表达式中使用文字值,则它会正确匹配:

$ xmlstarlet sel -N x="http://soap.sforce.com/2006/04/metadata" -t -c "//x:labels[x:value/text()=\"> GET VEHICLE DATA\"]/x:fullName" -n test.xml
<fullName xmlns="http://soap.sforce.com/2006/04/metadata">Button_Value_Get_Data</fullName>
© www.soinside.com 2019 - 2024. All rights reserved.