2013-06-13 3 views
2

일부 xml을 구문 분석하기위한 간단한 bash 스크립트를 작성하고 있습니다. 나는 sed와 awk를 사용하고 있었지만 xmllint가 더 적합하다고 생각한다.xmllint와 xpath를 사용하여 여러 줄을 출력하는 방법

불행히도 저는 완전히 xpath에 익숙해서 정말 열심히 싸우고 있습니다. 나는 다음과 같은 XML을 가지고 노력하고있어

:

<?xml version="1.0" encoding="UTF-8"?> 
<releaseNote> 
<name>APPLICATION_ercc2</name> 
<change> 
    <date hour="11" day="10" second="21" year="2013" month="0" minute="47"/> 
    <submitter>Automatically Generated</submitter> 
    <description>ReleaseNote Created</description> 
</change> 
<change> 
    <version>2</version> 
    <date hour="11" day="10" second="25" year="2013" month="1" minute="47"/> 
    <submitter>fred.bloggs</submitter> 
    <description> first version</description> 
<install/> 
</change> 
<change> 
    <version>3</version> 
    <date hour="12" day="10" second="34" year="2013" month="1" minute="2"/> 
    <submitter>fred.bloggs</submitter> 
    <description> tweaks</description> 
<install/> 
</change> 
<change> 
    <version>4</version> 
    <date hour="15" day="10" second="52" year="2013" month="1" minute="38"/> 
    <submitter>fred.bloggs</submitter> 
    <description> fixed missing image, dummy user, etc</description> 
    <install/> 
</change> 
<change> 
    <version>5</version> 
    <date hour="17" day="10" second="31" year="2013" month="1" minute="40"/> 
    <submitter>fred.bloggs</submitter> 
    <description> fixed auth filter and added multi opco stuff</description> 
    <install/> 
</change> 

을 .....

하고는 XPath 스크립트에 변수로 '3'에 전달하는 프로세스 및 출력 뭔가 이 같은

말하면
4 fred.bloggs 10/1/2013 15:38  fixed missing image, dummy user, etc 
5 fred.bloggs 10/1/2013 17:40  fixed auth filter and added multi opco stuff 

버전의 값은 예를 들어,보다 큰 각 노드의 내용의 복잡한 조합 3.

,536,

답변

2

xpath 도구를 사용하는 것이 덜 특이 할 수도 있지만이 유형의 도구에 유용한 도구는 xmlstarlet입니다. xmlstarlet

, 다음 작품 (내가 당신의 예에 releaseNote에 가까운 태그를 추가) :

$ summary() { 
    xmlstarlet sel -t -m "//change[version > $2]" \ 
        -v submitter -o $'\t' \ 
        -v date/@day -o '/' -v date/@month -o '/' -v date/@year -o ' ' \ 
        -v date/@hour -o ':' -v date/@minute -o $'\t' \ 
        -v description -n $1 
} 
$ summary test.xml 3 
fred.bloggs  10/1/2013 15:38 fixed missing image, dummy user, etc 
fred.bloggs  10/1/2013 17:40 fixed auth filter and added multi opco stuff 

$ 
+0

xmlstarlet 들어하지 않았다. 흥미 롭 군. – LarsH