Получить определенный атрибут из файла XML с помощью модуля Ansible xml - PullRequest
0 голосов
/ 30 июня 2018

У меня есть XML-файл, как показано ниже

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>CFBundleExecutable</key>
    <string>p4v</string>
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>2018.2</string>
    <key>CFBundleVersion</key>
    <string>2018.2/1666551</string>
    <key>CFBundleGetInfoString</key>
    <string>2018.2, Copyright 2018 Perforce Software, Inc.</string>
    <key>CFBundleIconFile</key>
    <string>application.icns</string>
    <key>P4RevString</key>
    <string>P4V/MACOSX1013X86_64/2018.2/1666551 (2018/05/30)</string>
    <key>NSPrincipalClass</key>
    <string>NSApplication</string>
    <key>NSHighResolutionCapable</key>
    <string>True</string>
    <key>CFBundleName</key>
    <string>P4V</string>
    <key>CFBundleSignature</key>
    <string>P4VC</string>
    <key>CFBundleIdentifier</key>
    <string>com.perforce.p4v</string>
</dict>
</plist>

Как мне получить строку 2018.2 для ключа CFBundleShortVersionString?

Я пробовал что-то похожее ниже, но в нем перечислены все строковые значения вместо одного, соответствующего указанному ключу.

 - xml:
      path: /Applications/p4v.app/Contents/Info.plist
      xpath: /plist/dict[starts-with(key,'CFBundleShortVersionString')]/string
      attribute: CFBundleShortVersionString
      content: 'text'
   register: p4v_version

Я думаю, что здесь указан неправильный xpath, но я не смог найти правильный.

1 Ответ

0 голосов
/ 30 июня 2018

Вам вообще не нужно attribute здесь, и если нет других <dict> -ов, вы можете пропустить первое условие.

- xml:
    path: /Applications/p4v.app/Contents/Info.plist
    xpath: /plist/dict/key[.='CFBundleShortVersionString']/following-sibling::*[1]
    content: 'text'
  register: p4v_version
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...