2016-08-03 38 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)稍後用於用戶信息...

讓我們知道你是怎麼做到的!

相關問題