2016-08-03 61 views
1

我需要从XML文件中提取某些数据,但也知道提取的元素在原始XML文件中的位置 - 作为从文件开始的字符偏移量,或该行中的行号+位置。python中的XML解析,同时保留链接到原始文件中的位置

常用的python XML库似乎没有提供任何这样的功能。

有一个类似的问题Obtaining position info when parsing HTML in Python这是通过编写一个自定义的包装器解决html5lib;但该库不适用于我,因为特定的数据不是HTML。

是否有任何保存元素位置信息的XML解析器,还是我必须为此自动解析?

+0

lxml有'sourceline',但只给你行号 – gsnedders

回答

0

我不认为这样的事情存在。大多数解析器首先执行解析(将文本流操作为标记,然后将其解析为树)。到那时,他们通常对原始流中的位置有很好的了解(这是输出解析错误所必需的)。但是一旦构建了对象树,这些信息的用处就会很小,并且不能再通过结果对象访问。

一个好的和丑陋的黑客(同时!)将标记XML输入,添加“位置”属性引用原始流的位置,用常规库解析XML并使用该属性(s)稍后用于用户信息...

让我们知道你是怎么做到的!

相关问题