Мне нужно преобразовать XML-документ в JSON, чтобы легко получить доступ к данным в JavaScript.В настоящее время я использую этот метод для преобразования XML в JSON:
json_encode(new SimpleXMLElement($xml, LIBXML_NOCDATA));
Однако я столкнулся с проблемой, когда элемент содержит только 1 дочерний элемент.Когда он анализируется с помощью SimpleXML, он обрабатывается как объект, а не как массив.Я хочу, чтобы они всегда обрабатывались как массивы, если только элемент не содержит только текст.
Пример:
$xml = <<<END
<xml>
<TESTS>
<TEST>TEXT HERE</TEST>
</TESTS>
</xml>
END;
echo json_encode(new SimpleXMLElement($xml, LIBXML_NOCDATA));
Это выводит:
{"TESTS":{"TEST":"TEXT HERE"}}
Если я добавлю еще одинэлемент ниже, тогда вывод будет таким, каким я его хочу:
$xml = <<<END
<xml>
<TESTS>
<TEST>TEXT HERE</TEST>
<TEST>MORE TEXT HERE</TEST>
</TESTS>
</xml>
END;
echo json_encode(new SimpleXMLElement($xml, LIBXML_NOCDATA));
Вывод:
{"TESTS":{"TEST":["TEXT HERE","TEXT HERE"]}}
Обратите внимание, как элементы содержатся внутри массива JSON вместо объекта JSON.Есть ли способ заставить элементы анализироваться как массивы?