小编yul*_*kes的帖子

使用Python中的&符号修复无效的XML

我使用Python来操作从另一个系统收到的XML文件.该系统产生无效的XML.主要是,它不会逃避XML中的某些&.
所以,例如,我有一些这样的行:

<IceCream>Ben&Jerry</IceCream>
Run Code Online (Sandbox Code Playgroud)


当然,当使用SAX或DOM解析时,它会抛出无效的令牌错误.
对于一些更一般的背景 - 它是一个非常大的文件(2MB),相当平坦,并且在CDATA中包含大量数据.

我尝试过的:

  1. 编写正则表达式只替换unesacped&,没有reesacaping> 等等:&(?!\w{2,4};).它修复了它,但它在CDATA中逃脱了&符号,然后在目标系统中导致错误.我之后无法忘记CDATA中的所有内容,因为其中一些需要保持转义.
  2. 使用美丽(石头)汤.也不走运.它没有逃避松散的&符号,而是创建了一个实体(即&Jerry;).不好.

下一步是使用状态机编写我自己的解析器.救我走这条路.
它不是一个复杂的结构(非常扁平,最多4层深),因此也许正则表达式可能能够捕获不在CDATA中的区域.

非常感谢.

python regex xml dom sax

5
推荐指数
1
解决办法
2600
查看次数

标签 统计

dom ×1

python ×1

regex ×1

sax ×1

xml ×1