我很困惑。如何访问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] ) ;
?>
我正在使用它,但我得到一个空白的屏幕......
答案 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的东西,比如<
或>
,但这似乎是你最好的选择......