处理包含无效字符(PHP)的XML的最佳方法是什么?

时间:2013-10-30 06:00:30

标签: php xml character-encoding xml-parsing qbxml

我正在使用QBXML与Quickbooks集成。我正在运行客户查询,Quickbooks返回的XML似乎包含无效字符(!)。

查看quickbooks返回的源XML,我可以看到无效字符(出于隐私原因,实际命名已更改,但我留下了相关字符):

<Contact>Ongél Davabond</Contact>

当我尝试解析XML时(使用PHP XML解析器,从xml_parser_create()开始),我收到一个无效的字符消息。

我注意到XML标题只是:

<?xml version="1.0" ?>

我尝试使用

进行preg_replacing
<?xml version="1.0" encoding="utf-8" ?>

但这没有任何区别。

鉴于我无法改变我收到XML的方式,我如何才能最好地处理它?有没有办法让PHP XML解析器接受这样的字符? PHP是否有办法将任何无效字符转换为&amp; #nnn;在不影响XML结构的情况下,我是否需要逐个查找无效字符并手动替换它们?我不知道将来会出现什么其他无效字符,所以我想要一次性处理所有可能性,而不是仅仅修复这个'é'字符。

1 个答案:

答案 0 :(得分:1)

虽然我期待UTF-8,但返回的XML是ISO-8859-1。强制ISO-8859-1编码解决了这个问题。