使用simplexml和CDATA在XML文件中获取一个特殊字符


Get a special charactor in a XML file using simplexml and CDATA

我试图使用simplexml在XML文件中检索字符串。但是字符串包含字符"&"。所以我认为我必须使用CDATA来获取值。我是新手,不知道怎么做。这只是我想要的一个例子。

Example.php

<?php
  $xmlstr = <<<XML
  <?xml version='1.0' standalone='yes'?>
  <Books>
     <Book>
        <title> PHP & XML </title>
        <author> Some text </author>
        <price> Some text </price>
     </Book>
     <Book>
        <title> Java & Coding </title>
        <author> Some text </author>
        <price> Some text </price>
     </Book>
  </Books>
  XML;
?>

这是我调用的php文件

call.php

<?php
  include 'Example.php';
  $xml = simplexml_load_string($xmlstr);
  $abc = $xml->Book[0]->title[0];
  echo $abc;
?>

并且由于字符"&"而给出错误。我不能更改我的XML。可以对call.php进行任何修改对于此事的任何帮助,我将不胜感激。谢谢。

你有一个确切的问题像这样PHP, SimpleXML,解码实体在CDATA

它解释了CDATA在

的情况下可以使用。

特殊字符(特别是>、<和&)来逃脱。CDATA包含字符&是否与普通文本节点相同包含,.>

看一下这个

编辑

这是一个解决方案,如果你每次加载你的example.php代码成字符串,那么下面是一个解决方案。

  $xmlstr = str_replace("&","&amp;",$xmlstr);
  $xml = simplexml_load_string($xmlstr);
  $abc = $xml->Book[0]->title[0];
  echo $abc;