【发布时间】:2013-05-14 06:44:14
【问题描述】:
在我使用 PHP 5.3.x 的 CodeIgniter 2.x 项目中,我使用以下函数将 Dom 文档呈现为 XML 响应。一切都很顺利。但是由于一些格式不正确的意外文本(根元素外的非空白文本),生成的 XML 解析失败。
function renderDOMAsXML(DOMDocument &$dom, $format = true, $status = 200){
$dom->formatOutput = $format;
$controller = &get_instance();
$controller->output->set_status_header($status);
$controller->output->set_header('Content-type: application/xml; charset=utf-8');
$controller->output->set_output($dom->saveXML());
}
出于好奇,我将格式错误的意外文本(根元素外的非空白文本)解码为十六进制格式,如下所示。
\x00ef\x00bb\x00bf\x00ef\x00bb\x00bf\x00ef\x00bb\x00bf\x00ef\x00bb\x00bf\x00ef\x00bb\x00bf
或
\x{00ef}\x{00bb}\x{00bf}\x{00ef}\x{00bb}\x{00bf}\x{00ef}\x{00bb}\x{00bf}\x{00ef}\x{00bb}\x{00bf}\x{00ef}\x{00bb}\x{00bf}
或者像这样

我不知道出了什么问题。什么是格式错误的意外文本(根元素外的非空白文本)?他们有任何标题信息吗?当我想将其呈现为浏览器的 XML 响应时,我该如何跳过它们。
【问题讨论】:
-
在没有 CI 方法的情况下输出 XML 以确定是 DOM 问题还是 CI 问题。
-
这是 php 文件编码的问题,是我用 Unicode 编码创建一些文件的错误。
标签: php xml codeigniter domdocument