源
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body>
<lima2t:runlargeResponse xmlns:lima2t="uri://Metadata.com/home/1.0">
<data>
<capacity>
<name>Everyday.Italian.Dish</name>
<currency>($)</currency>
<CashAmount>not.used.for.this.transaction</CashAmount>
<CheckAmount>not.used.for.this.transaction</CheckAmount>
<CreditAmount>not.used.for.this.transaction</CreditAmount>
</capacity>
<capacity>
<name>Everyday.French.Dish</name>
<currency>($)</currency>
<CashAmount>not.used.for.this.transaction</CashAmount>
<CheckAmount>not.used.for.this.transaction</CheckAmount>
<CreditAmount>134,70</CreditAmount>
</capacity>
</data>
</lima2t:runlargeResponse>
</soap:Body>
</soap:Envelope>目标提取:
134,70来自<CreditAmount>134,70</CreditAmount>
我试过这个命令,但是命令输出屏幕上的所有内容
xmllint --path '//soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"/soap:Body/lima2t:runlargeResponse xmlns:lima2t="uri://Metadata.com/home/1.0"/data/capacity/@name="Everyday.French.Dish"/CreditAmount/text()' op.xml我觉得好像有东西不见了,但我找不到什么
发布于 2020-06-22 15:25:59
如下所示:
xmllint --xpath '
//data/capacity[name="Everyday.French.Dish"]/CreditAmount/text()
' op.xml或者使用shell开关(需要额外的后处理来删除垃圾):
xmllint --shell op.xml<<EOF
cat //data/capacity[name="Everyday.French.Dish"]/CreditAmount/text()
EOF或者使用小星
xmlstarlet sel -t -v '
//data/capacity[name="Everyday.French.Dish"]/CreditAmount/text()
' op.xml输出:
134,70https://stackoverflow.com/questions/62517724
复制相似问题