获取此file.xml
<session id = 1111>
<query text = text1 >
<response>
firstresponse1
</response>
<response>
secondresponse1
</response>
</query>
<query text = secondtext >
<response>
!!!aresponse2!!!
</response>
<response>
!!!aresponse3!!!
</response>
</query>
<query text = thirdtext>
<response>
firstreponse3
</response>
<response>
secondresponese4
</response>
</query>
</session>
我想在 secondtext
中获得两个响应标记输出:
!!! aresponse2 !!!
!!! aresponse3 !!!
最有效的方法是什么?
答案 0 :(得分:4)
正确的方法是使用XML / HTML解析器,例如 xmllint 或 xmlstarlet 。
xmllint 解决方案:
xmllint --html --xpath "//query[@text='secondtext']/response/text()" file.xml 2>/dev/null
输出:
!!!aresponse2!!!
!!!aresponse3!!!