2013-02-26 42 views
-2

有沒有辦法在處理DOM樹時獲取我解析文件的源代碼的信息?我需要獲取源文件的名稱和一行元素開始。在必須升級應用程序的代碼,使其打印像這樣的錯誤:錯誤配置記錄 - 等等,等等......在config1.xml,線路24Perl DOM和XML源參考文獻

+0

你用什麼Perl模塊解析?下面是使用LibXML的一個可能相關的問題:http://stackoverflow.com/questions/14414738/perl-libxml-get-last-line-number-of-node – 2013-02-26 08:51:55

+0

可能不是LibXML,因爲我的實現沒有定義'line_number'方法,但感謝您的提示。 – 2013-02-26 09:06:13

+2

不要告訴我們你沒有使用什麼解析器;告訴我們你正在使用的那個。這個問題在你做之前是無法回答的。 – ikegami 2013-02-26 09:18:22

回答

1

XML::DOM模塊的子類XML::Parser,這又子類XML::Parser::Expat。最後一個提供了一個current_line方法,該方法返回解析過程中已經達到的文件行號。

雖然信息可用,但是由調用包使用它並將其構建到最終文檔樹中。如果沒有這樣做,那麼在解析之後沒有辦法檢索信息。

根據XML::DOM級別XML::Parser::Expat接口的暴露程度,您可以從XML::DOM的子類別中獲得一些里程數;但我預計這些更改必須在XML::DOM::Parser或更低的級別進行,然後您有問題說服調用類使用您的子類而不是原始類。

很可能你最好使用不同的XML模塊,它保留了解析後需要的信息。如果這是可能的,並且XML::LibXML滿足您的要求,那麼去代替。

+0

非常感謝。我的Perl包含LibXML,所以我可以輕鬆地嘗試它。但是我該怎麼做才能得到文件名?文檔的多個部分可以分開存儲,並作爲SYSTEM實體從外部包含。 – 2013-02-26 11:14:45