このような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