我尝试使用以下代码无效 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的非验证解析吗?
答案 0 :(得分:1)
假设' 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'))