我正在使用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 是否有办法将任何无效字符转换为它们的 &#nnn;等效项,而不影响 XML 结构,还是我需要逐个字符遍历整个 XML 字符以查找无效字符并手动替换它们?我不知道将来会出现哪些其他无效字符,所以我正在寻找一种一次性处理所有可能性的方法,而不仅仅是修复这个"é"字符。
虽然我期待 UTF-8,但返回的 XML 是 ISO-8859-1。强制 ISO-8859-1 编码解决了这个问题。