у меня есть такой XML
<?xml version = "1.0" encoding = "UTF-8"?>
<groups>
<group name = "group1" location = "city1">Group1</group>
<group name = "group2" location = "city2">Group2</group>
</groups>
и я хотел бы проанализировать его в строку json, которая имеет вывод что-то вроде:
{
"groups": [
{
"name": "group1",
"location": "city1"
},
{
"name": "group2",
"location": "city2"
}
]
}
Я попробовал в своем скрипте xql функцию xml-to-json с fn:xml-to-json(/xml)
, но безуспешно из-за исключения: FOJS0006 xml-to-json: element found in wrong namespace:
Может ли кто-нибудь дать мне подсказку, как правильно разобрать XML в JSON? Заранее благодарю!
я пытался найти в Google и какое-то предложение, но безуспешно
В XQuery 3.1 нет функции, преобразующей произвольный XML в JSON (функция xml-to-json обрабатывает только ограниченный словарь XML — читайте спецификацию!).
Например, это нужно сделать вручную.
map{"groups": array{
for $gp in groups/group
return map{"name": $gp/@name,
"location": $gp/@location}
}
}
А затем, чтобы превратить дерево карт и массивов в лексический JSON, используйте функцию serialize()
с методом сериализации JSON. Конечно, вы также можете сгенерировать лексический JSON «вручную», но правильно настроить экранирование и отступы сложно.