【发布时间】: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 加载代码:
- $xmlDoc = new DOMDocument();
- $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->recover = TRUE;开关,该开关将丢弃未知字符(例如那些具有未定义实体名称的字符,如&nbsp;)。或者,如果您知道字符串格式正确,您可以自己处理实体,但要注意 cdata 部分。 -
@Eric Klassen:你能复习一下你的问题吗?您在此处添加的 XML not 包含
&nbsp;实体。在您的错误消息的上下文中,这看起来非常错误。请仔细检查并根据需要进行更正。
标签: php xml load domdocument