Smile 笑容

simpleXML:String could not be parsed as XML

这个问题是在创建SimpleXML的时候遇到的。它对XML的要求比较高标准,必须符合 要求否则很容易抛出异常(Uncaught exception )而且通过try和catch 无法截获。不过,最后还是找到了问题的原因,从源头解决而不是通过try来忽视它。

最近在处理一个中文的XML数据到数据库的时候,常会出现这个错误,前几次直接想办法忽略过去,但是失败了。甚至都没有办法把错误掩藏起来继续执行下去。

起初的思路是遮盖错误的。 使用 @ 在语句前面,失败。

try catch 失败。

遮盖不了,怀疑是编码问题,XML标记的是 gb2312的,于是就先自己转换成 utf-8试试,还是 失败。

加入 LIBXML_NOERROR 参数,还是失败。

忽然想看看出错的内容,察看到内容包含繁体字,这是问题的所在么?

搜索时候偶然看到 gbk 和 gb2312的区别就是 gbk是 gb标准字库增加了对繁体字的扩展支持。 于是改转换为 gbk到utf-8 问题解决了。

当然,在这个编码问题之前,还遇到了很多xml格式上的错误,都给修正后,就剩下处理这个错误了,现在转换程序正在运行中。不知道是否还会给我抛出个新的异常否?

参考:

http://www.google.com/search?q=gbk%20gb2312&hl=zh-CN

http://www.php.net/manual/zh/ref.simplexml.php

http://www.php.net/manual/zh/function.simplexml-element-construct.php

http://www.php.net/manual/zh/ref.libxml.php#libxml.constants