zoukankan      html  css  js  c++  java
  • 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]", "")

    今天将自己踩到的坑记录一下,以往对园友有所帮助。



  • 相关阅读:
    python 类型注解
    python 装饰器
    python 高阶函数、柯里化
    python 生成器函数
    python 递归和匿名函数
    Python 函数返回值、作用域
    Python 练习题总结(待续)
    基于 K8S 集群安装部署 istio-1.2.4
    基于 kubeadm 部署 kubernetes(v1.17.0) 集群
    Gitlab 重置 root 密码
  • 原文地址:https://www.cnblogs.com/wang-meng/p/1d95fad55ebc162fd7cbb0ab09c047bb.html
Copyright © 2011-2022 走看看