我正在尝试使用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")))
答案 0 :(得分:1)
lxml透明地为你疏忽。因此,您可以先尝试修复输入中的无效字符,然后将结果提供给lxml。例如,您可以尝试一个简单的regex-based solution to escape invalid characters。
答案 1 :(得分:0)
在Python中处理不完美的标记语言文件的一个流行选项是使用Beautiful Soup。它可以使用许多解析器,包括lxml。
你能发布一些给你带来问题的XML吗?