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
задокументирован...
Я просто полностью что-то пропустил?
Ответы
Ответ 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
для полной информации.