私はこの構文をいくつかの場所で見ました(例えば、 ここ ):
xmllint --xpath '/plist/array/string/text()' tmp.xml
、xpathセレクターを使用して特定のXMLノードを照会するために使用されます。ただし、これを自分のマシン(mac os x snow leopard)で実行しようとすると、エラーUnknown option --xpath
が発生します。
Xmllintのマニュアルページを詳しく見てみると、--xpath
オプションが文書化されていません...
私はここで何かを完全に見逃していますか?
xmllint --Shell tmp.xml <<<'xpath /plist/array/string/text()'
Stdinを読み取るためにxmllintを作成する必要がある場合:
cat /tmp/tmp.xml | xmllint --Shell <(cat) <<<'xpath /plist/array/string/text()'
一部の人々にとって、更新はオプションではありません。他のチームによってインストールされた特定のバージョンで作業する必要があり、それを使用します。
--Shellを試すことができます:
xmllint --Shell tmp.xml << EOF
'/plist/array/string/text()'
EOF
ああ、うん、libxml2
の古いバージョンの問題だったに違いない。
Macportsを介してlibxml2
を(v2.7.8
に)更新すると、問題が修正されたようです。
Macのコマンドラインからplist
ファイルを操作する場合は、PlistBuddy
を使用します。
たとえば、シェルスクリプトでこの種のことを行うことができます。
BUNDLE_ID=`/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' Info.plist`
echo $BUNDLE_ID
これは非常に強力で、配列や辞書の項目を追加/削除したり、キーまたはインデックス付きの値を検索したり、他のファイルをコピー/マージ/インポートしたりできます。詳細については、/usr/libexec/PlistBuddy -h
を参照してください。