可以解析一个文档,但不能解析另一个文档

时间:2013-06-09 23:01:28

标签: php xml formatting cdata

我有两个XML文档,格式如下:

<?xml version="1.0" ?>
<article>
  <body>
    <![CDATA[
      *some text*
    ]]>
  </body>
</article>

我希望用它来回应它们:

<?php
  $xml = simplexml_load_file("." . $filename); 
  echo $xml->body;
?>

但是其中一个有效,另一个只有回声。发生了什么事?

更新: 产生错误的文档包含这个appostrophe:' 当删除此撇号时,代码可以正常工作。我需要一些方法来逃避这样的角色,我该怎么办呢?

2 个答案:

答案 0 :(得分:0)

只需回显asXML(),您可能会在第二个文件中看到错误。

echo $xml->asXML();

以下是SimpleXML的简单教程:http://php.net/manual/en/simplexml.examples-basic.php

答案 1 :(得分:0)

Espace your appostrophe:

<?php
  $text = file_get_contents("." . $filename); 
  $text = str_replace("'", "&apos;", $text);
  $xml = simplexml_load_string($text); 
  echo $xml->body;
?>

此外,有人有类似的问题(没有崩溃,但垃圾字符),并提出了相同的解决方案。稍后在该论坛帖子中他们推测utf8_encode和utf8_decode,您也可以尝试。链接:http://board.phpbuilder.com/showthread.php?10359181-RESOLVED-SimpleXML-apostrophe-problem&p=10886946&viewfull=1#post10886946