这让我感到很烦恼,在网上有很多类似的问题,但我找不到正确的解决方案。
我正在使用PHP创建一个XML文档,以作为Ajax请求的响应发送。响应将类似于以下内容:
上面展示的xml成功返回给调用它的javascript函数,但是当它尝试解析xml文档时失败了。
如果我使用这个验证器来验证xml,我会得到以下错误:
该页面包含以下错误: 第5行第15列出现错误:未定义实体'nbsp'
实体—也会引起同样的问题。
我认为我可能需要找到一种方法将类似以下内容放入xml中:
我正在使用PHP创建一个XML文档,以作为Ajax请求的响应发送。响应将类似于以下内容:
<?xml version="1.0" encoding="iso-8859-1"?>
<response>
<status>success</status>
<message> —</message>
</response>
这个标签会包含比这更有意义的信息,但正是像这样的实体给我带来了问题。
生成该xml的php代码如下:
header("Content-Type: text/xml");
$dom = new DOMDocument('1.0', 'iso-8859-1');
$dom->formatOutput = true;
$response_node = $dom->createElement("response");
$dom->appendChild($response_node);
$response_node->appendChild($dom->createElement('status', 'success'));
$response_node->appendChild($dom->createElement('message', " &mdash"));
echo $dom->saveXML();
return;
上面展示的xml成功返回给调用它的javascript函数,但是当它尝试解析xml文档时失败了。
如果我使用这个验证器来验证xml,我会得到以下错误:
该页面包含以下错误: 第5行第15列出现错误:未定义实体'nbsp'
实体—也会引起同样的问题。
我认为我可能需要找到一种方法将类似以下内容放入xml中:
<!ENTITY name "entity_value">
我不确定如何做这件事,或者这是否是正确的方法。我是否走错了方向?如果是,我该怎么做呢?如果不是,解决这个问题的正确方法是什么?
$trans = get_html_translation_table(HTML_ENTITIES)
来获取一个字符到实体的翻译表,然后对于$trans
中的每个键/值对,像$table[$value] = '&#' . ord($key) . ';'
这样做来构建你实际需要的表格。但是,一些实体(如—
)在该表中缺失,因此你可能需要维护一个包含所有可能实体的表格。 - scoffey