我正在尝试使用SAX Parser解析XML,但继续得到XML document structures must start and end within the same entity.
这是我期望的,因为我从其他来源获得的XML文档将不合适。但我不希望引发此异常,因为我想解析XML文档,直到我在该文档中找到<myTag>
并且我不关心该文档是否有正确的启动和关闭实体。
示例:
<employeeDetails>
<firstName>xyz</firsName>
<lastName>orp</lastName>
<departmentDetails>
<departName>SALES</departName>
<departCode>982</departCode>...
这里我不想关心文件是否有效,因为这部分不在我手中。所以我想解析这个文档,直到我看到<departName>
之后,我不想解析文档。请建议我如何做到这一点。感谢。
答案 0 :(得分:2)
您不能使用XML解析器来解析不包含格式良好的XML的文件。 (它不一定是有效,只是格式正确。区别在于,请阅读Well-formed vs Valid XML。)
根据定义,XML必须格式正确,否则不是XML 。解析器通常必须满足一些基本约束才能运行,而对于XML解析器,它是良好的形式。
首先手动修复文件以构建格式良好的XML,或者以编程方式打开文件,然后使用传统的解析技术 将其解析为文本 文件。 除非您拥有格式良好的XML,否则XML解析器无法帮助您。
答案 1 :(得分:0)
BeautifulSoup可以很好地处理不完整的xml。 我用它来解析大型XML文件的前缀以进行预览。
>>> from bs4 import BeautifulSoup
>>> BeautifulSoup('<a><b>foo</b><b>bar<','xml')
<?xml version="1.0" encoding="unicode-escape"?>\n<a><b>foo</b><b>bar</b></a>