0

我试图用它lxml来帮助我解析一些 XML 文件并输出它。但是,XML 文件中有一些特殊字符。我不想替换它,因为它太复杂而无法逃脱和取消它。我也不能强迫其他人生成格式良好的 XML。

Python有什么办法可以让我用lxml处理格式不正确的XML?

我可以正确阅读它:

  parser = etree.XMLParser(recover=True)
  root = etree.parse(sys.argv[1],parser=parser)

但是当我想打印元素文本时,它只能打印内容,直到出现特殊字符。

  for element in root.iter("content"):
    print("%s - %s  attr - %s" % (element.tag, element.text, element.get("name"))) 
4

2 回答 2

1

lxml 会透明地为您取消转义。因此,您可以尝试先修复输入中的无效字符,然后将结果提供给 lxml。例如,您可以尝试一个简单的基于正则表达式的解决方案来转义无效字符

于 2012-11-16T03:46:50.597 回答
0

在 Python 中处理不太完美的标记语言文件的一个流行选择是使用Beautiful Soup。它可以使用许多解析器,包括 lxml。

你能发布一些给你带来问题的 XML 吗?

于 2012-11-16T03:33:17.110 回答