我需要将一个XML文档转换为JSON格式,以便在JavaScript中轻松访问数据。目前我正在使用以下方法将XML转换为JSON:
json_encode(new SimpleXMLElement($xml, LIBXML_NOCDATA));
然而,当一个元素只包含一个子元素时,我遇到了一个问题。当使用SimpleXML解析时,它被视为对象而不是数组。我希望它们始终被视为数组,除非该元素仅包含文本。
示例:
$xml = <<<END
<xml>
<TESTS>
<TEST>TEXT HERE</TEST>
</TESTS>
</xml>
END;
echo json_encode(new SimpleXMLElement($xml, LIBXML_NOCDATA));
这会输出:
{"TESTS":{"TEST":"TEXT HERE"}}
如果我在```
```下添加另一个元素,则输出结果就是我想要的:
请注意,元素被包含在JSON数组中而不是JSON对象中。是否有一种方法可以强制将元素解析为数组?
$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对象中。是否有一种方法可以强制将元素解析为数组?