XML 角色失败

XML fails on  character

当从我的远程服务器请求数据时,它在节点内使用以下标记  响应一个值,使解析过程失败。我手动删除了有罪的字符串,它开始工作了。

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"
               xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
               xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<soap:Body>
...
    <sFName>Bradley</sFName>
    <sLName>L&#x1E;ibbra</sLName>
...

令牌:&#x1E;

Savon 提出的错误是:

Savon::InvalidResponseError: Unable to parse response body:

&#x1E;(又名信息分隔符二)是不是allowed character in XML :

[2] Char ::= #x9 | #xA | #xD | [#x20-#xD7FF] | [#xE000-#xFFFD] | [#x10000-#x10FFFF]

因此您的数据不是 XML,任何合规的 XML 处理器必须报告错误,例如您收到的错误。

您必须通过将其视为 文本而不是 XML、 手动删除任何非法字符来修复数据,或者在将其与任何 XML 库一起使用之前自动执行。

另见

我原来的问题是 Savon ruby gem. I sorted this out by changing the default response parser to :rexml。它现在解析无效字符并且不会引发异常。

但正确的答案是解析格式错误的 XML 或要求提供商修复它。谢谢@kjhughes