解析xml文件时保留html内容

时间:2010-08-11 15:16:38

标签: php xml

我有一个xml文件

<text>
    <defalut>This file has the following features:</defalut>
    <value>
        <ul>
            <li><info>CSS text formatting </info></li>
            <li><info>Text loaded from a XML</info></li>
            <li><info>Scrolls with easing</info></li>
            <li><info>Mouse wheel supported</info></li>
            <li><info>HTML supported</info></li>
            <li><info>Click on the bar to move  the handle to that point</info></li>
            <li><info>Supports images</info></li>
            <li><info>The scrollbar hides if not needed</info></li>
            <li><info>The scrollbar resizes proportonal to the text sizeq</info></li>
        </ul>
    </value>
    <tittle>Lorem Ipsum</tittle>
</text>

我正在使用xpath和xquery来解析此文件

$xml_str1 = file_get_contents("file.xml");
echo $xml_str = $xml_str.$xml_str1;
$xml = simplexml_load_string($xml_str);
$nodes = $xml->xpath('//text');

但我只收到字符串。 如何在结果中保留html标记  如果iam正在解析<value>标记,我将收到不包含<ul><li>的内容。如何在<value>标记中获取完整的html内容,因为它是

提前致谢

5 个答案:

答案 0 :(得分:1)

$nodes = $xml->xpath('//text/value');

答案 1 :(得分:1)

我不是100%肯定我会关注你的问题,但我的直觉告诉我你正在寻找CDATA部分:

<text>
    <defalut>This file has the following features:</defalut>
    <value>
    <![CDATA[
        <ul>
            <li><info>CSS text formatting </info></li>
            <li><info>Text loaded from a XML</info></li>
            <li><info>Scrolls with easing</info></li>
            <li><info>Mouse wheel supported</info></li>
            <li><info>HTML supported</info></li>
            <li><info>Click on the bar to move  the handle to that point</info></li>
            <li><info>Supports images</info></li>
            <li><info>The scrollbar hides if not needed</info></li>
            <li><info>The scrollbar resizes proportonal to the text size</info></li>
        </ul>
    ]]>
    </value>
    <tittle>Lorem Ipsum</tittle>
</text>

或者你可以逃脱所有<>个字符:

<text>
    <defalut>This file has the following features:</defalut>
    <value>
        &lt;ul&gt;
            &lt;li&gt;&lt;info&gt;CSS text formatting &lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;Text loaded from a XML&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;Scrolls with easing&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;Mouse wheel supported&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;HTML supported&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;Click on the bar to move  the handle to that point&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;Supports images&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;The scrollbar hides if not needed&lt;/info&gt;&lt;/li&gt;
            &lt;li&gt;&lt;info&gt;The scrollbar resizes proportonal to the text size&lt;/info&gt;&lt;/li&gt;
        &lt;/ul&gt;
    </value>
    <tittle>Lorem Ipsum</tittle>
</text>

答案 2 :(得分:0)

解析文件后,它会被加载到DOM表示中,该表示是所有节点的内存树。要获取HTML,您必须序列化包含XML的节点。

答案 3 :(得分:0)

使用asXML(),SimpleXMLElement :: asXML - 返回基于SimpleXML元素的格式良好的XML字符串

$result = $xml->xpath('//text');
echo $result[0]->asXML();

答案 4 :(得分:0)

不需要CDATA 我们可以简单地使用

$result = $xml->xpath('//text');
echo $result[0]->asXML();

它将加载HTML内容