Mic*_*ves 1 php encoding xmlreader
我有一个PHP脚本,它试图解析一个巨大的XML文件.为此,我正在使用XMLReader库.在解析过程中,我有这个编码错误:
输入不正确UTF-8,表示编码!字节:0xA0 0x32 0x36 0x30
我想知道它们是否是一种跳过带有坏字符的记录的方法.
谢谢!
首先,确保您的XML文件确实是UTF-8编码的.如果没有将编码指定为第二个参数XMLReader::open().
如果编码错误是UTF-8文档中真正的格式错误的字节序列,并且如果您使用PHP> 5.2.0,则可以将LIBXML_NOERROR和/或(取决于错误级别)LIBXML_NOWARNING作为位掩码传递给第三个参数XMLReader::open():
$xml = new XMLReader();
$xml->open('myxml.xml', null, LIBXML_NOERROR | LIBXML_NOWARNING);
Run Code Online (Sandbox Code Playgroud)
如果你使用PHP> 5.1.0,你可以调整libXML错误处理.
// enable user error handling
libxml_use_internal_errors(true);
/* ... do your XML processing ... */
$errors = libxml_get_errors();
foreach ($errors as $error) {
// handle errors here
}
libxml_clear_errors();
Run Code Online (Sandbox Code Playgroud)
我实际上不知道前两个解决方法是否实际允许XMLReader在出现错误时继续读取,或者它们是否仅抑制错误输出.但值得一试.
回应评论:
libXML定义XML_PARSE_RECOVER(1)但是ext/libxml不会将此常量公开为PHP常量.也许可以将整数值传递1给$options参数.
$xml = new XMLReader();
$xml->open('myxml.xml', null, LIBXML_NOERROR | LIBXML_NOWARNING | 1);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7862 次 |
| 最近记录: |