【问题标题】:Load XML into PHP - Entity 'nbsp' not defined将 XML 加载到 PHP 中 - 未定义实体“nbsp”
【发布时间】:2013-09-21 00:50:21
【问题描述】:

我正在尝试将 xml 文件(通过 Web 表单创建)加载到 php 页面中。这些目录是在添加产品时创建的,并为每个产品编写一个 XML,稍后将由页面回调。

这是我得到的错误。

警告:DOMDocument::load() [domdocument.load]:实体 'nbsp' 未在 /home/content/41/11699441/html/nc/products/belly-dump/234efg/data.xml 中定义,行: 4 在 /home/content/41/11699441/html/nc/includes/_xml.php 第 4 行

这是 XML 加载代码:

  1. $xmlDoc = new DOMDocument();
  2. $xmlDoc->load('data.xml');

XML 文件:

<?xml version="1.0"?>
<xml>
<model>
    <type>Gravel Box</type>
    <titleXML>345FGH - Tridem Clamshell</titleXML>
    <features>here are features</features>
    <options>here are options</options>
    <gallery>my photo gallery directory</gallery>
    <info>additional information</info>
</model>
</xml>

编写 XML 文档的 PHP 代码

`$xml = new SimpleXMLElement('');

$model = $xml->addChild('model');
$model->addChild('type', $type);
$model->addChild('titleXML', $titleXML);
$model->addChild('features', $feature);
$model->addChild('options', $option);
$model->addChild('gallery', $gallery);
$model->addChild('info', $info);

$xml->saveXML($target_Path.'data.xml');`

【问题讨论】:

  • 您能否在问题中包含示例 XML?
  • 是的,我们需要查看 XML。另外,你试过 SimpleXMLElement() 吗?
  • 我已经尝试过 SimpleXMLElement、loadHTML、load,但我不断收到错误。
  • DOMDocument::load() 只处理有效的 XML。您可以使用$doc-&gt;recover = TRUE; 开关,该开关将丢弃未知字符(例如那些具有未定义实体名称的字符,如&amp;nbsp;)。或者,如果您知道字符串格式正确,您可以自己处理实体,但要注意 cdata 部分。
  • @Eric Klassen:你能复习一下你的问题吗?您在此处添加的 XML not 包含 &amp;nbsp; 实体。在您的错误消息的上下文中,这看起来非常错误。请仔细检查并根据需要进行更正。

标签: php xml load domdocument


【解决方案1】:

你可以使用 DomDocument::loadHTML();对于你的问题。实体不在已知的 XML 实体中。 XML 中的所有实体都必须是数字实体,除了 和 '。您的 XML 文件似乎不是有效的 XML 文件。因此您可以使用 loadHTML 方法加载它,这对于无效 XML 几乎没有问题。

最好的解决方案是 data.xml 文件是有效的。因此,如果可以,只需修复写入过程而不是读取过程即可。

【讨论】:

  • 请原谅我的无知,但我将如何着手修复写作过程。 ...我是 XML 新手,我没有在任何地方使用 CDATA,而且我不知道如何放入 XML 标记中。这可能是问题的一部分吗?
  • 使用 $xmlDoc->loadHTMLFile('data.xml'); 我收到以下错误 - Warning: DOMDocument::loadHTMLFile() [domdocument.loadhtmlfile ]:data.xml 中的标记 xml 无效,第 5 行 /home/content/41/11699441/html/nc/includes/_xml.php 中的第 2 行
猜你喜欢
  • 1970-01-01
  • 2012-04-03
  • 2011-12-19
  • 1970-01-01
  • 2021-11-28
  • 1970-01-01
  • 2012-06-05
  • 1970-01-01
  • 2011-09-06
相关资源
最近更新 更多