繁体   English   中英

如何在没有dtd验证和使用lxml的情况下解析xml?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM