парсинг в памяти xml в питоне - PullRequest
0 голосов
/ 24 марта 2019

Я пытаюсь проанализировать XML, который находится в памяти (не в файле).Как можно получить значение <id>.

xmldoc="""
<forest-counts xsi:schemaLocation="http://marklogic.com/manage/forests manage-forests.xsd" xmlns="http://marklogic.com/manage/forests" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <id>10110137205746170621</id>
  <name>testdb1</name>
<forest-counts>
"""

Я не могу использовать BS из-за некоторых ограничений.Будут признательны любые другие решения.

Для экспертов MarkLogic:
Я пытаюсь получить идентификатор леса программным путем.Если есть какое-то другое решение, тогда все будет в порядке.

1 Ответ

0 голосов
/ 24 марта 2019

В последнее время я мало занимался синтаксическим анализом XML в Python, но если вам нужен только идентификатор леса, вы можете получить его из REST Management API в JSON.

curl -s --anyauth -u admin:admin "http://localhost:8002/manage/v2/forests?format=json"

Это один из немногих примеров, когда немного расстраивает то, что идентификатор не возвращается в свойствах ресурса. Но это в структуре JSON, возвращаемой из конечной точки списка.

Вот jq-запрос, который найдет идентификатор леса леса testdb1:

jq ".\"forest-default-list\".\"list-items\".\"list-item\"[] | select(.nameref==\"testdb1\") | .idref"

Обратите внимание, что представление идентификатора леса - это строка в JSON, даже если это число. Это позволяет избежать проблем с переполнением чисел для очень больших значений случайных идентификаторов.

...