Подтвердить что ты не робот

Xmllint неизвестный параметр '--xpath'

Я видел этот синтаксис в нескольких местах (например, here):

xmllint --xpath '/plist/array/string/text()' tmp.xml, используемый для запроса конкретного XML node с помощью селектора xpath. Тем не менее, я получаю сообщение об ошибке Unknown option --xpath, когда я пытаюсь выполнить это на своей машине (mac os x snow leopard).

Более внимательно изучая man-страницу для xmllint, я не вижу, что параметр --xpath задокументирован...

Я просто полностью что-то пропустил?

4b9b3361

Ответ 1

Для некоторых пользователей обновление не является вариантом. Вы должны работать с данной версией, установленной другой командой, и вы идете с ней.

Вы можете попробовать --shell:

xmllint --shell tmp.xml << EOF
'/plist/array/string/text()'
EOF

Ответ 2

xmllint --shell tmp.xml <<<'xpath /plist/array/string/text()'

Если вам нужно сделать xmllint для чтения stdin:

cat /tmp/tmp.xml | xmllint --shell <(cat) <<<'xpath /plist/array/string/text()'

Ответ 3

А, да, должно быть, проблема с устаревшей версией libxml2.

Обновление libxml2 (до v2.7.8) через macports, похоже, устранило проблему.

Ответ 4

Если вы хотите манипулировать файлами plist из командной строки на Mac, используйте PlistBuddy.

Например, вы можете сделать это в оболочке script:

BUNDLE_ID=`/usr/libexec/PlistBuddy -c 'Print :CFBundleIdentifier' Info.plist`
echo $BUNDLE_ID

Он очень мощный, вы можете добавлять/удалять элементы в массивах и словарях, искать ключевые или индексированные значения, копировать/объединять/импортировать другие файлы и т.д. См. /usr/libexec/PlistBuddy -h для полной информации.