2011-08-15 93 views
2

我很困惑。我如何訪問CDATA中的標籤?使用PHP在XML中訪問標籤中的標籤

XML代碼:

<body> 
<block> 
<![CDATA[ 
    <font color="#FFCC53" size="+6"><b>Latest News Updates</b></font> 
    <font color="#AAAAAA">HTML Formatted Text Fields</font>    
]]>       
</block> 
</body> 

PHP代碼:

<?php 
    $xml = simplexml_load_file("main.xml"); 
    print ( $xml->smallTextList[0]->item[0]->textBody[0]->font[0]) ; 
?> 

我使用的這個,但我得到了一個空白頁面....

+0

可能的解決方案? http://stackoverflow.com/questions/1246732/parsing-xml-cdata-with-php – blottedscience

回答

0

你的問題是,你的字體標籤是的CDATA內部。由於CDATA代表「編譯數據」,因此PHP應將其視爲「未分析數據塊」。它不應該(也不能)讓你閱讀這些標籤。你可能不得不這樣做:

$xml = simplexml_load_file("main.xml"); 
$inner = simplexml_load_string( 
'<fk>' . // you have to wrap the CDATA in a tag, otherwise it will break. 
     // not sure about asXML. You may be able to get away without it. 
     $xml->block[0]->asXML() . 
'</fk>' 
); 
print $inner->font[0]; 

你的問題,當然,是CDATA將讓事情在沒有有效的XML,像<>,但是這似乎是最好的選擇。 ..

+0

我把它和得到這個錯誤message.Fatal錯誤:調用一個成員函數asXML(c)中的非對象: \ XAMPP \ htdocs中第7行 – junaid

+0

@junaid即更多或更少的來自上述代碼複製\ XML \論壇\ 1.PHP,這意味着你的'smallTextList [0] - > item'並不存在。 – cwallenpoole