将 XML 转换为对象并保留 HTML
Converting XML to Object and Preserve HTML
我有一个 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
)
)
)
)
)
)
我尝试将 HTML 包装在 <![CDATA[ ]]>
中,但随后我只收到一个空的更新日志对象。每当解析我的 XML 文件时,我该怎么做才能保留我的 HTML?
您需要 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);
我有一个 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
)
)
)
)
)
)
我尝试将 HTML 包装在 <![CDATA[ ]]>
中,但随后我只收到一个空的更新日志对象。每当解析我的 XML 文件时,我该怎么做才能保留我的 HTML?
您需要 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);