Использовать AppleScript для разбора XML через URL - PullRequest
0 голосов
/ 03 марта 2020

Я пытаюсь проанализировать данные с сетевого медиаплеера.

Я могу получить доступ к данным на проигрывателе через следующую конечную точку:

http://192.168.10.2:8008/GetUserVars

Это возвращает следующие данные: -

<?xml version="1.0" encoding="UTF-8"?>
<BrightSignUserVariables>
  <BrightSignVar name="CurrentLetter">W</BrightSignVar>
  <BrightSignVar name="CurrentUserName">&amp;Q&amp;W&amp;Q&amp;W&amp;Q&amp;W&amp;Q&amp;W</BrightSignVar>
</BrightSignUserVariables>

Из этого мне нужно использовать AppleScript, чтобы получить значения из узла элемента BrightSignVar XML, атрибут name которого равен CurrentLetter и CurrentUserName.

По сути, я хочу получить эти два текстовых узла:

  • W
  • &amp;Q&amp;W&amp;Q&amp;W&amp;Q&amp;W&amp;Q&amp;W

Я попробовал следующий пример, но получил ошибки, какие-нибудь идеи?

set theXMLFile to ((http://192.168.10.2:8008/GetUserVars) as string)

tell application "System Events"

    set CurrUser to (value of XML element "CurrentUserName")

    set CurrLetter to (value of XML element "CurrentLetter")

end tell

Редактировать:

Я также пробовал следующее:

set theXMLFile to (do shell script (("curl -X GET 'http://192.168.10.5:8008/GetUserVars'")))

tell application "System Events"

    set CurrUser to XML elements of XML element "BrightSignVar" of XML element "BrightSignUserVariables" of theXMLFile whose name is "CurrentUserName"

end tell

Это возвращает ответ как Однако выше я получаю сообщение об ошибке при попытке установить CurrUser в качестве переменной:

can't make "BrightSignUserVariables" into type integer (-1700)

1 Ответ

2 голосов
/ 07 марта 2020

Вы были очень близки. Вот ваш последний скрипт с несколькими соответствующими поправками, которые, как я считаю, должны работать:

set userVars to do shell script "curl -X GET 'http://192.168.10.5:8008/GetUserVars'"

tell application id "com.apple.SystemEvents"
    tell (make new XML data with data userVars)
        tell XML element "BrightSignUserVariables"
            tell every XML element whose name="BrightSignVar" to ¬
                set {letter, username} to its value
        end tell
    end tell
end tell

Когда я запустил его, используя предоставленный вами текст ответа XML, возвращаемое значение было:

{"W", "&Q&W&Q&W&Q&W&Q&W"}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...