我需要將XML文檔轉換爲JSON,以便輕鬆訪問JavaScript中的數據。我目前使用這種方法將XML轉換成JSON:使用PHP將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對象中。有沒有辦法強制元素被解析爲數組?
似乎你有對象,但第一種情況下這個元素的值是字符串,但第二個是數組。 –
我想你必須走XML並手動轉換爲數組。即使有強制使用數組而不是對象的方法,那麼第一個示例最終會針對JSON:{「Tests」:[{「Test」:[「Text HERE」]}]}。我在想這不是你真正想要的。 –
你正在傳入一個對象(類simplexml)......當然你會從json_encode中取出一個對象。 –