如何在没有 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 的 非验证 解析吗?
假设“无效的 dtd”是指 <city>
标签在上面的 XML 示例中没有关闭,那么您的文档实际上是 无效 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'))
我试过使用以下代码 无效 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 的 非验证 解析吗?
假设“无效的 dtd”是指 <city>
标签在上面的 XML 示例中没有关闭,那么您的文档实际上是 无效 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'))