使用PHP以XML格式访问CDATA内的标签

时间:2011-08-15 13:52:11

标签: php xml cdata

我很困惑。如何访问CDATA内的标签?

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] ) ;
?>

我正在使用它,但我得到一个空白的屏幕......

1 个答案:

答案 0 :(得分: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的东西,比如<>,但这似乎是你最好的选择......

相关问题