【问题标题】:SimpleXMLElement::__construct(): Entity: line 1: parser error : Start tag expected, '<' not foundSimpleXMLElement::__construct():实体:第 1 行:解析器错误:需要开始标记,未找到“<”
【发布时间】:2017-02-17 23:48:34
【问题描述】:

下面的代码(使用 CodeIgniter 3.0)给出了这个错误,我不明白为什么:

SimpleXMLElement::__construct():实体:第 1 行:解析器错误:需要开始标记,未找到“

<?php

require_once './pdfGenerator.php';
require_once './pdfWrapper.php';
require_once './tcpdf_ext.php';
$debug = false;
$error_handler = set_error_handler("PDFErrorHandler");

if (get_magic_quotes_gpc()) {
    $xmlString = stripslashes($_POST['mycoolxmlbody']);
} else {
    $xmlString = $_POST['mycoolxmlbody'];
}
//where the problem

if ($debug == true) {
    error_log($xmlString, 3, 'debug_'.date("Y_m_d__H_i_s").'.xml');
}

$xml = new SimpleXMLElement($xmlString, LIBXML_NOCDATA);
$scPDF = new schedulerPDF();
$scPDF->printScheduler($xml);
function PDFErrorHandler ($errno, $errstr, $errfile, $errline) {
    global $xmlString;
    if ($errno < 1024) {
        echo $errstr."<br>";
        error_log($xmlString, 3, 'error_report_'.date("Y_m_d__H_i_s").'.xml');
        exit(1);
    }
}

【问题讨论】:

  • $xmlString 的内容似乎不是有效的 XML。你检查过吗?
  • 如果我们要帮助您,您应该向我们提供$xmlString 的内容。但看起来你可以自己解决这个问题

标签: php simplexml


【解决方案1】:

使用

$xml = simplexml_load_string($xmlString,'SimpleXMLElement', LIBXML_NOCDATA);

而不是

$xml = new SimpleXMLElement($xmlString,LIBXML_NOCDATA);

【讨论】:

  • 或者,由于LIBXML_NOCDATA 与大多数人使用 SimpleXML 无关,除了一些调试混乱,只是$xml = new SimpleXMLElement($xmlString); 我不认为这是这个问题的问题,因为错误消息是关于 XML 的内容,而不是传递的选项。
猜你喜欢
  • 2016-06-23
  • 2015-10-30
  • 1970-01-01
  • 1970-01-01
  • 2016-02-20
  • 2015-12-07
  • 2012-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多