使用 PHP 访问 XML 中 CDATA 内的标签

发布于 2024-11-29 18:42:07 字数 573 浏览 0 评论 0原文

我很困惑。如何访问 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] ) ;
?>

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

I am confused. How can I access tags inside CDATA?

XML Code:

<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 Code:

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

I am using this, but I am getting a blank screen....

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

笑着哭最痛 2024-12-06 18:42:07

您的问题是您的字体标签位于 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,例如 <>,但这似乎是你最好的选择......

Your problem is that your font tags are inside of CDATA. Since CDATA stands for "Compiled Data", PHP should treat it as a "block of non-parsed data." It should not (and cannot) let you read those as tags. You'll probably have to do something like:

$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];

Your problem, of course, is that CDATA will let things in which are not valid XML, like < or >, but this seems to be your best option...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文