xmlstartlet
でplist XMLファイルを照会したいとします。私はstring
タグのテキストをユニークなkey
タグの後に探しています。 XMLファイルには、私は、例えば後の方法に文字列値を探していますどのような場合でもplistファイルでは、xmlstarletツールを使用して一意のキータグの後に文字列を抽出する方法
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>15B42</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
.
.
.
</dict>
</plist>
または
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<othertag>
<dict>
<key>BuildMachineOSBuild</key>
<string>15B42</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleIconFile</key>
<string>AppIcon</string>
.
.
.
</dict>
</othertag>
</plist>
のように見えることができますキーCFBundleDevelopmentRegion
(この場合はen
)。
ディクテーションが発生する階層内の場所は不明です(/plist/dict
または/plist/another/dict
など)が、ファイル全体で一意です。
私は
xmlstarlet sel -t -v '//string/following::key[text()="CFBundleDevelopmentRegion"]' myfile.plist
を試してみましたが、私は任意の出力を得ることはありません。私のXPathが間違っているのですか、またはxmlstarlet
に他のパラメータを指定する必要がありますか?
完全にこの作品! – halloleo