如何在没有任何额外信息的情况下从xml读取cdata标记信息
的test.xml
<EncodingKeys>
<Streaming>
<![CDATA[54G91A8?s7^F97C]Fyj*8&kR2eU+HNg!]]>
</Streaming>
<Uploads>
<![CDATA[&^%&^*vsfgsdfEw#z2etVCTSN@Sb!F2]]>
</Uploads>
</EncodingKeys>
test.sh
Streamingkey="$(echo "cat /EncodingKeys/Streaming/text()" | xmllint --nocdata --shell test.xml | sed '1d;$d')"
Uploadskey="$(echo "cat /EncodingKeys/Uploads/text()" | xmllint --nocdata --shell test.xml | sed '1d;$d')"
echo $Streamingkey
echo $Uploadskey
实际输出:
54G91A8?s7^F97C]Fyj*8&kR2eU+HNg!
&^%&^*vsfgsdfEw#z2etVCTSN@Sb!F2
预期产出:
54G91A8?s7^F97C]Fyj*8&kR2eU+HNg!
&^%&^*vsfgsdfEw#z2etVCTSN@Sb!F2
为什么我会&
取代&
。我还可以看到更长的id变量。
有人可以帮助我解决这个问题。
答案 0 :(得分:1)
使用xml_grep!
准备测试文件
$cat test.xml
<EncodingKeys>
<Streaming>
<![CDATA[54G91A8?s7^F97C]Fyj*8&kR2eU+HNg!]]>
</Streaming>
<Uploads>
<![CDATA[&^%&^*vsfgsdfEw#z2etVCTSN@Sb!F2]]>
</Uploads>
</EncodingKeys>
对于'流媒体'使用
$ xml_grep --text_only 'Streaming' test.xml
获取
54G91A8?s7^F97C]Fyj*8&kR2eU+HNg!
对于“上传”,请使用
$ xml_grep --text_only 'Uploads' test.xml
获取
&^%&^*vsfgsdfEw#z2etVCTSN@Sb!F2