bash - 如何在xml中提取所有相同的标记

时间:2017-11-16 15:18:39

标签: html xml bash

获取此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 !!!

最有效的方法是什么?

1 个答案:

答案 0 :(得分:4)

正确的方法是使用XML / HTML解析器,例如 xmllint xmlstarlet

xmllint 解决方案:

xmllint --html --xpath "//query[@text='secondtext']/response/text()" file.xml 2>/dev/null

输出:

            !!!aresponse2!!!

            !!!aresponse3!!!