xml解析、写入遇到的坑
前言
最近在看一个线上xml文件导出的问题,需求如下:
从我们平台导出一个后缀为tmx的术语语料数据(实际内容为xml文件),然后导入到其他第三方平台发现无法导入。
从其他平台导入的tmx文件无法导入到我们平台。
因为第三方平台并没有提示哪里出错,所以这里还是用了一点时间来定位问题,主要问题有以下两点:
- 读取和写入的时候没有注意到用户输入或导出的xml中包含特殊字符
- 导出为xml时没有将一些非法字符过滤掉
问题一: 过滤特殊标签
- <
- >
- &
- ‘
- “
这些特殊标签在xml中都需要转义才能够使用,对应的转义列表如下:
问题二:过滤非法标签
这个是在导入时报了一个错:An invalid XML character (Unicode: 0x**) was found in the comment.
最后查找才知道这个是解析的xml中有特殊字符,或者称为乱码。(xml格式为UTF-8 BOM)
一般是因为xml中有些不可见的特殊字符,官方定义了XML中的无效字符分为三段:
0x00 - 0x08 0x0b - 0x0c 0x0e - 0x1f
所以解决方法是 解析或者写入前将字符串的非法字符过滤掉,方法如下:
string.replaceAll("[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f]", "")
原文地址:https://www.cnblogs.com/wang-meng/p/1d95fad55ebc162fd7cbb0ab09c047bb.html
相关推荐
-
Springboot项目使用Slf4j将日志保存到本地目录 Java基础
2020-6-14
-
基于Java语言构建区块链(六)—— 交易(Merkle Tree) Java基础
2020-5-30
-
shell的简单批量curl接口脚本 Java基础
2019-6-8
-
前端实现旗帜飘动效果系列 (Ⅲ):canvas2D实现(2) Java基础
2020-5-29
-
JavaScript遍历循环 Java基础
2020-7-3
-
聊聊银企直联服务那些事 Java基础
2019-5-15
-
可别在代码中写那么多魔法值了,脑壳疼! Java基础
2020-6-14
-
QT学习小demo之LightMD(MarkDown编辑器) Java基础
2019-9-11
-
J2Cache 和 JetCache 框架有何不同? Java基础
2020-7-3
-
Javassist使用方法总结 Java基础
2020-5-30