我有一个XML文件,如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<plugins>
<plugin>
<name>Test</name>
<changelog>
<ul>
<li>Test</li>
<li>Test 2</li>
<li>Test 3</li>
</ul>
</changelog>
</plugin>
</plugins>
现在我要做的是将其转换为PHP对象,同时保留HTML。以下是我如何阅读XML:
$simpleXML_plugin_objs = simplexml_load_file( 'plugins.xml' );
$plugin_obj_arr = json_decode( json_encode( $simpleXML_plugin_objs ) );
并获得以下内容:
stdClass Object (
[plugin] => Array (
[0] => stdClass Object (
[name] => Test
[changelog] => stdClass Object (
[ul] => stdClass Object (
[li] => Array (
[0] => Test
[1] => Test 2
[2] => Test 3
)
)
)
)
)
)
我已尝试在<![CDATA[ ]]>
中包装HTML,但之后我只收到一个空的changelog对象。在解析XML文件时,我该怎么做才能保留HTML?
答案 0 :(得分:3)
您需要LIBXML_NOCDATA
选项:
simplexml_load_file( 'plugins.xml', 'SimpleXMLElement' , LIBXML_NOCDATA );
即使没有此选项,也会加载 CDATA
个部分:
$changelog = $simpleXML_plugin_objs->children()->children();
echo $changelog[1];
但它们不是常规对象变量,因此json_encode()
,print_r()
和其他检查函数将它们视为空SimpleXMLElement
个对象:
print_r($simpleXML_plugin_objs);