[英]how to parse xml without dtd validation and using lxml?
我尝试使用以下代码具有无效的 dtd / xml
<city>
<address>
<zipcode>4455</zipcode>
</address>
我正在尝试使用lxml进行解析
像这样,
from lxml import etree as ET
parser = ET.XMLParser(dtd_validation=False)
tree = ET.fromstring(xml_data,parser)
print(tree.xpath('//zipcode'))
不幸的是,这段代码仍然给出xml错误,
任何想法我怎么能得到上述xml的非验证解析?
假设使用' invalid dtd '意味着您没有在上述XML示例中关闭<city>
标记,则您的文档实际上是无效的XML或坦率地说它根本不是XML,因为它不遵循XML规则。
您需要以某种方式修复文档,才能将其视为XML文档。 对于这种简单的未封闭标签情况,设置recover=True
将完成以下工作:
from lxml import etree as ET
parser = ET.XMLParser(recover=True)
tree = ET.fromstring(xml_data,parser)
print(tree.xpath('//zipcode'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.