当前位置: 首页 > 知识库问答 >
问题:

在XML文件中遇到特殊的UTF-8字符时想抛出异常

魏景龙
2023-03-14

现在,我们的业务应用程序拥有一组组件,这些组件由不同的团队开发,并且不使用相同的库来解析XML。我的组件使用JAXB,而其他一些组件使用SAX等等。现在,当XML文件中有特殊字符时,JAXB会正确地解析它,但其他组件(子应用程序)不能正确地解析它们,并引发异常。

由于业务需要,我不能更改其他组件的编程,但我必须对我的应用程序进行限制/验证,以确保XML(数据加载)文件不包含任何此类字符。

什么是最好的方法来确保文件不包含上面提到的(或类似的)字符,我可以抛出异常(或给出错误),然后我开始使用JAXB解析XML文件。

共有1个答案

计和顺
2023-03-14

如果您的客户发送给您的XML文件的头部编码与文件内容不匹配,那么您还不如放弃尝试对该文件做任何有意义的事情。-他们真的在发送标题与实际编码不匹配的数据吗?那就不是XML了。你应该向他们收取更多的费用;-)

只需将文件作为FileInputStream逐个字节读取。如果它包含负字节值,则拒绝处理它。

您可以保留UTF-8或ISO 8859-1之类的编码设置,因为它们都有US-ASCII作为适当的子集。

 类似资料:
  • 我网站上的一位用户在文本字段中输入了特殊字符:Ảỏ 这些显然不是我可以从键盘输入的相同的äö字符,因为当我将它们粘贴到程序员的记事本中时,它们分成两部分:a–o–字符 在我的网站的服务器端,我有一个PHP脚本,它可以识别用户输入中的非法特殊字符,并在带有的html错误消息中高亮显示这些字符。 字符分割也发生在那里,因此我得到了一个普通的字母a和o,带有一个奇怪的单独的xCC字符,它破坏了UTF

  • 模板的主页是关于我们的,它由 索引页基本上是flash容器做动画,但从其他页面加载文件,如新闻,关于我们,联系人,画廊。 首先,你们中的一些人会说,检查这些字符是否包括在flash文件中,以及字体是否支持它。因此,我打开index.fla文件,盗用这些字符,并选择字符范围内的所有字符。我通过打开photoshop并检查如果我在那里键入字符是否会正确显示,以确保字体支持特殊字符。 我还打开了inde

  • 问题内容: 我正在尝试开发XML导出功能,以使我的应用程序用户可以XML格式导出其数据。我已经准备好了该功能并且可以正常工作,直到在某些情况下开始失败。然后我意识到是因为某些特殊字符需要编码。例如,数据可能包含&或!或%或’或#等。等等,需要正确地转义。我想知道是否有通用的实用程序可以按照XML规范转义所有特殊字符。我在Google上找不到任何东西。 已经有类似的东西了吗?或还有其他方法吗? 这是

  • 问题内容: 我试图编写一个文件名带有特殊字符的文件,例如“téééê.mp3”,但文件名始终保留“?” 我尝试了几种方法来代替字符“é”,但没有找到解决方法: 我也尝试过这种方式。 问题答案: 尝试: 现在,如果这是您的文件系统不支持此类文件名的问题,您将得到一个;。不同于,新的API拒绝创建可能最终无法读取的文件名。 如果确实无法创建路径,那么,您将必须找到某种逃避和撤消逃避的方法。也许写一个别

  • 问题内容: 我必须用Java处理这种情况: 我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。 让我们考虑一个示例,其中该无效XML包含£(磅)。 1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,

  • 我试图使用xslt将xml中的特殊字符转换为其编码形式。 例子: 等等下面给出了我使用的代码 XML结构是 输出也应该包含xml节点,这就是为什么我在文本区域中使用xsl:拷贝而不是xsl: value-of。因为xsl: value-of Select="name"将只输出这是一个文件 我正在使用XSLT版本1。o 我想要的输出是