我已经从curl请求中收到了这个XML。
<?xml version="1.0" encoding="utf-8"?>
<transaction>
<result>PENDING</result>
<merchanttransid>343434343</merchanttransid>
<transref>23232323</transref>
<errorcode>000</errorcode>
<errormessage/>
<description/>
</transaction>
SMTP Error: Could not connect to SMTP host.
但是,服务器正在回复SMTP错误的其他错误响应:无法连接到SMTP主机。现在,通过simplexml_load_string()解析时。
抛出错误:
实体:第10行:解析器错误:文档末尾的额外内容(错误号码:2)
因为,XML是正确的,只是在响应上有问题,有没有办法解决这条额外的行?
答案 0 :(得分:0)
您可以尝试调用传递它的函数参数来忽略读取XML的错误消息:
$xml = simplexml_load_file($url, "SimpleXMLElement", LIBXML_NOERROR | LIBXML_ERR_NONE);
您可以看到包含可以传递给此功能的选项的完整列表:http://www.php.net/manual/en/libxml.constants.php
另一个解决方案(如果要解析大文件,这不好)是逐行读取字符然后删除最后一行。
$xml = '<?xml...?>';
$lines = explode("\n", $xml);
unset( $lines[count($lines)-1] ); // remove last line
$output = implode($lines); // output now contains xml without the last line
希望有所帮助。
答案 1 :(得分:0)
如果您知道结构将始终如此,则循环每一行,从左侧剥离空白,如果第一个字符与“&lt;”不同然后删除该行。最后将结果提供给SimpleXML。