이와 같은 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
.name
one thing
$ xmlstarlet sel -t -v '//prop[name = "one thing"]/value' -nl file.xml
2
이는 XML에 XPATH 쿼리를 적용하고 값이 있는 노드 아래의 노드를 선택한 value
다음 해당 노드의 값을 추출합니다.prop
name
one thing
간결함을 위해 //prop
이를 사용하여 prop
문서의 어느 위치에서나 노드를 찾습니다. 관심 있는 노드가 항상 루트 노드 아래에 있다는 /conf/prop
것을 알고 있다면 이를 로 변경할 수 있습니다.prop
conf
똑같은 것 xmllint
:
$ xmllint --xpath '//prop[name = "one thing"]/value/text()' file.xml
2