2012-07-17 50 views
2

解析CDATA我有以下XML代碼:不能用SimpleXML

<para> 
     <![CDATA[ 
     <?php 
     $data = '<?xml version="1.0"?> 
     <root>content</root>'; 
     $sxe = simplexml_load_string($data); 
     var_dump($sxe); 
     ?> 
     ]]> 
    </para> 

我想解析CDATA部分採取這樣的結果:

Content: 
<?php 
$data = '<?xml version="1.0"?> 
<root>content</root>'; 
$sxe = simplexml_load_string($data); 
var_dump($sxe); 
?> 

我用下面的,但它不工作。

$xml='sxml.xml'; 
$book = simplexml_load_file($xml, 'SimpleXMLElement', LIBXML_NOCDATA); 

$para = $book->chapter->para[1]; 
print "Content: ".$para."<br>"; 

foreach($para AS $node) { 
    print "Iter Content: ".$node."<br>";  
} 

這導致:

Content: 


     content'; 
     $sxe = simplexml_load_string($data); 
     var_dump($sxe); 
     ?> 

在phpinfo()函數它表明的libxml啓用和活性。 有什麼幫助嗎?在此先感謝

回答

2

你應該使用htmlspecialchars

例如編碼特殊字符: print "Content: ".htmlspecialchars($para)."<br>";

+0

你能給我一個例子,如果你能? – 2012-07-17 17:20:03

+0

非常感謝!有效! – 2012-07-17 17:23:42

+1

@MrGlass意味着節點內容按照請求被回顯,但是因爲您正在瀏覽器中查看節點,所以節點被解析爲HTML,因爲它們不是有效的HTML標籤,所以不能解析爲任何內容。查看源代碼以查看它們,或使用'htmlspecialchars'轉義輸出。 – 2012-07-17 17:23:53