将XML转换为Object并保留HTML

时间:2015-02-26 16:43:04

标签: php html xml json parsing

我有一个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?

1 个答案:

答案 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);