哪个 XML 解析器可以处理不完整的 XML 文件?
Which XML parser can handle an incomplete XML file?
我正在尝试使用 SAX 解析器解析 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>
之后我不想解析这个文档。请建议我如何做到这一点。谢谢。
您不能使用 XML 解析器来解析不包含格式正确的 XML 的文件。 (它不一定是有效,只是格式良好。对于差异,请阅读Well-formed vs Valid XML。)
根据定义,XML必须是合式的,否则就不是XML。解析器通常必须满足一些基本约束才能运行,对于 XML 解析器,它是格式良好的。
首先手动修复文件以使其格式正确XML,或者以编程方式打开它并将其解析为文本 文件使用传统的解析技术。 XML 解析器无法帮助您,除非您有格式良好的 XML。
BeautifulSoup in Python 可以很好地处理不完整的 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>
我正在尝试使用 SAX 解析器解析 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>
之后我不想解析这个文档。请建议我如何做到这一点。谢谢。
您不能使用 XML 解析器来解析不包含格式正确的 XML 的文件。 (它不一定是有效,只是格式良好。对于差异,请阅读Well-formed vs Valid XML。)
根据定义,XML必须是合式的,否则就不是XML。解析器通常必须满足一些基本约束才能运行,对于 XML 解析器,它是格式良好的。
首先手动修复文件以使其格式正确XML,或者以编程方式打开它并将其解析为文本 文件使用传统的解析技术。 XML 解析器无法帮助您,除非您有格式良好的 XML。
BeautifulSoup in Python 可以很好地处理不完整的 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>