여러 속성과 이름을 사용하여 xml을 구문 분석하는 방법

여러 속성과 이름을 사용하여 xml을 구문 분석하는 방법

이와 같은 XML 스크립트가 있는 경우 XML 구문 분석을 사용하여 특정 이름의 값을 얻는 방법

<?XML>
<conf>
<prop><name>something</name><value>1</value></prop>
<prop><name>one thing</name><value>2</value></prop>
<prop><name>another thing</name><value>3</value></prop>
<prop><name>one more thing</name><value>4</value></prop>
</conf>

이와 같은 행이 많이 있다고 가정하십시오.

답변1

value" "를 얻으려면 XMLStarlet을 사용하십시오 prop.nameone thing

$ xmlstarlet sel -t -v '//prop[name = "one thing"]/value' -nl file.xml
2

이는 XML에 XPATH 쿼리를 적용하고 값이 있는 노드 아래의 노드를 선택한 value다음 해당 노드의 값을 추출합니다.propnameone thing

간결함을 위해 //prop이를 사용하여 prop문서의 어느 위치에서나 노드를 찾습니다. 관심 있는 노드가 항상 루트 노드 아래에 있다는 /conf/prop것을 알고 있다면 이를 로 변경할 수 있습니다.propconf

똑같은 것 xmllint:

$ xmllint --xpath '//prop[name = "one thing"]/value/text()' file.xml
2

관련 정보