我正在開發一個網站的有效,我需要加載XML文件 - 讓我們說的test.xml如何加載XML文件用PHP時CDATA不是
XML節點是公格式化,但裏面的值他們不是。每個節點的值都是CDATA嵌套字符串(但CDATA並不總是合適的)。 實施例:
<root>
<data>
<value1><![CDATA[Some value]]></value1>
<value2><![CDATA[ ]]></value2>
<value3>![CDATA[ ]]></value3>
</data>
</root>
原始XML結構是更復雜的,但是這是CDATA用法的例子。在節點值3中,CDATA無效(在'![CDATA'之前缺少'<'字符)。
我試着將文件加載與下面的代碼
<?php
$xml = simplexml_load_file("test.xml");
?>
,但我得到的警告。
然後我試着使用LIBXML_NOCDATA,但沒有改進。 我已經試過第二個代碼是:
<?php
$xml = simplexml_load_file("test.xml", null, LIBXML_NOCDATA);
//$xml = simplexml_load_file("test.xml", 'SimpleXMLElement', LIBXML_NOCDATA);
?>
但仍然有(有兩條線)的警告。
是否可以加載文件然後解析它(例如$ xml-> data-> value3)?
LIBXML_NOCDATA不是一個神奇的子彈,而且與持久的神話相反,它對於SimpleXML實際上是沒用的,因爲SimpleXML本身很好地處理CDATA。我在這裏解釋了一下它的作用:http://stackoverflow.com/a/13981917/157957你的問題更爲普遍:你破壞了XML;事實上,破碎的位*應該是CDATA部分並沒有幫助,因爲它們被破壞了,所以它們不是。 – IMSoP