如何删除XML中的特殊字符,不应导致错误" 1字节UTF-8序列的字节1无效"在阅读这个xml文件时

时间:2017-02-25 00:15:33

标签: java xml xslt mule

我收到错误

  

1字节UTF-8序列的字节1无效

在Java中读取XML文件以生成XSD。

然后我注意到我的XML确实有一些特殊的字符,如'"“”?&因此,在处理XML以生成XSD之前,我已经设法在Java中删除它们。但挑战在于它是动态数据,所以我们可能不知道我们将遇到什么样的角色。

我们如何巧妙地删除这些特殊字符?这样它会匹配UTF-8编码,从来没有这个问题吗?

这可以在XSLT中解决以删除字符吗?

我们如何从下面的部分摆脱这些字符或允许没有问题?

 <string>message</string>
                    <string>Very good dear laughing colours laken yeh heart bhot karap hota ha brain ke baat nahi sunte ha Allah bhagwan god Na yeh kuy banayai ha dear friends   ❤</string>

<string>message</string>
                    <string>वक़्त  और  दोस्त_मिलते  तो  मुफ्त_हैं, ☺
लेकिन  उनकी_कीमत  का  अंदाज़ा  तब  होता_है, ☝  जब ये कहीं  खो_जाते है ।...
#</string>

注意:我将XML文档的编码设置为UTF-8。

1 个答案:

答案 0 :(得分:0)

您的错误听起来像您的XML文档包含XML中禁止的单字节控制字符。 XML禁止某些字符出现在文档中;有关XML 1.0中允许的字符列表,请参阅https://www.w3.org/TR/xml/#charsets处的Char制作。

您需要在到达XML之前删除这些字符;否则你的XML将会格式不正确,此时它预计XSLT将无法转换你的文档。

如果您需要转换有效的 XML字符,XSLT可以使用translate函数执行此操作。例如,在所有文本节点上运行的translate(Windows-1252_string, "&#x84;&#x93;&#x94;", "&#x201e;&#x201c;&#x201d;")应该解决Windows-1252编码的引号。当然,最好确保在输入到达XML之前修复此输入。