2017-10-18 86 views
0

我想解碼xml中的值。請在下面找到一個示例。這將是多個塊。我需要找到標籤並解碼內容並生成相同的輸出。我只是在開始腳本的過程中。使用shell解碼xml的值

<SOAP-ENV:Body> 
<log-entry serial="abcde" domain="abc"> 
<date>Tue Oct 17 2017</date> 
<time utc="abcde">14:14:30</time> 
<type>all</type> 
<class>ccccc</class> 
<object>Web_Token</object> 
<level num="5">notice</level> 
<transaction>xxxxx</transaction> 
<global-transaction-id>xxxxx</global-transaction-id> 
<client>X.X.X.X</client> 
<message> 
<base64>**encodeddata**</base64> 
</message> 
</log-entry> 
</SOAP-ENV:Body> 

i need output 

<SOAP-ENV:Body> 
<log-entry serial="abcde" domain="abc"> 
<date>Tue Oct 17 2017</date> 
<time utc="abcde">14:14:30</time> 
<type>all</type> 
<class>ccccc</class> 
<object>Web_Token</object> 
<level num="5">notice</level> 
<transaction>xxxxx</transaction> 
<global-transaction-id>xxxxx</global-transaction-id> 
<client>X.X.X.X</client> 
<message> 
<base64>**decodeddata**</base64> 
</message> 
</log-entry> 
</SOAP-ENV:Body> 

我在迭代過程中,從解碼值開始。

sed -n 's/<base64>\(.*\)<\/base64>/\1/p' log.txt | base64 --decode 

謝謝。

+0

又有什麼問題? – AlexP

+0

不要用sed解析xml。你能夠安裝XML解析器嗎? – RomanPerekhrest

回答

0

試試這個:

xmllint --xpath '//message/base64/text()' file.xml 2>/dev/null | 
    base64 -d -