如何使用Python处理lxml中的转义字符串

时间:2012-11-16 03:23:21

标签: python xml xml-parsing lxml

我正在尝试使用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"))) 

2 个答案:

答案 0 :(得分:1)

lxml透明地为你疏忽。因此,您可以先尝试修复输入中的无效字符,然后将结果提供给lxml。例如,您可以尝试一个简单的regex-based solution to escape invalid characters

答案 1 :(得分:0)

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

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