【问题标题】:Get a special charactor in a XML file using simplexml and CDATA使用简单的 xml 和 CDATA 获取 XML 文件中的特殊字符
【发布时间】:2013-05-14 05:29:36
【问题描述】:

我正在尝试使用 simplexml 检索 XML 文件中的字符串。但该字符串包含字符“&”。所以我想我必须使用 CDATA 来获得价值。我对此真的很陌生,不知道该怎么做。 这只是我想要的一个例子。

例子.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 文件

调用.php

<?php
  include 'Example.php';

  $xml = simplexml_load_string($xmlstr);
  $abc = $xml->Book[0]->title[0];
  echo $abc;
?>

并且由于字符“&”而出现错误。我无法更改我的 XML。可以对call.php进行任何修改 任何有关此事的帮助将不胜感激。 谢谢。

【问题讨论】:

  • 好吧,XML 在技术上是无效的。你应该并且需要改变它。
  • 对不起。你能告诉我我的 XML 的哪一部分是无效的吗?
  • &amp;amp;。裸文本节点中不允许裸&amp;amp;要求&amp;amp;
  • 是的,这是我的问题。我无法改变它。因此,当我检索 标记内的字符串时,我必须想出一个方法。你知道怎么做吗?我无法更改我的 Example.php,因为我无法访问它。我只能对 call.php 进行更改
  • 感谢您的帮助。我在@NullVoid 的帮助下解决了问题:)

标签: php xml simplexml cdata


【解决方案1】:

你有一个像这样的确切问题所以PHP, SimpleXML, decoding entities in CDATA

它解释了CDATA可以在

的情况下使用

要转义的特殊字符(特别是 >、

看看这个。

编辑

如果您每次将 example.php 代码加载到字符串中,这是一种解决方案,那么下面是一种解决方案。

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

【讨论】:

  • 是的,我知道如何在 XML 中使用 CDATA PHP XML 但我的问题是如何在 call.php 中使用它因为我无法对我的 Example.php 进行任何更改
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-16
  • 1970-01-01
  • 2012-09-30
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多