宽松的XML python解析器:解析xml标签重叠

时间:2019-10-21 07:59:10

标签: python xml parsing

我正在寻找错误的XML输入的友好错误(在BeautifulSoup的术语中比较宽容)python解析器。问题是标签重叠。输入示例:

<trn>choya - <i><b>a cholla cactus </i> lat. <i>Cylindropuntia</b></trn></i>

我想要得到什么以及XML兼容的结果,例如(我希望的结果)

<trn>choya - <b><i>a cholla cactus </i> lat. <i>Cylindropuntia</i></b></trn>

带有BeautifulSouphtml.parser的{​​{1}}给了我其他东西(我不想得到的不好结果):

html5lib

请注意<trn>choya - <i><b>a cholla cactus </b></i> lat. <i>Cylindropuntia</i></trn> <i>标签的顺序。如果我将<b>标记为斜体,将<i>标记为粗体,则答案是

choya- 霍乱仙人掌 纬度。 Cylindropuntia

答案是

choya- 霍乱仙人掌 Cylindropuntia

我也尝试过旧的<b>,但未获得必要的结果。对于新的tidyhtml找不到python接口。 你可以帮我吗

  • 要找到可以完成这项工作的解析器
  • 如果没有,建议一种算法或与这类算法有关的任何知识来源

谢谢!

1 个答案:

答案 0 :(得分:0)

The Ionic CLI will exit. Please check any output above for error details. 擅长解析标记汤,SAX html.parser.HTMLParser类具有便捷的API,可基于事件生成XML。

不是所有的位都在这里实现,尤其是不是标签的“刚度” /“权重”约束(现在我们要做的只是将标签与我们期望的正确贴合,以使嵌套正确),但基本想法似乎可行。

输出为

XMLGenerator

这是有效的XML(嵌套)。

祝你好运!


<trn>choya - <i><com>a cholla cactus </com> lat. <i>Cylindropuntia</i></i> native to US</trn>