我有一個來自外部源的XML文檔,我需要每天一次又一次地使用XML::Simple
perl
模塊進行解析。我的腳本是從crontab運行的,如果XML文檔是健康的,它就可以正常工作。但我得到的錯誤信息和死,如果該文件是無效的,這樣的事情:Perl:如何解析無效的XML文檔?
junk after document element at line 740774, column 0, byte 36355798 at /usr/local/lib/perl/5.18.2/XML/Parser.pm line 187.
我發現XML文檔中的這條線,它看起來像這樣:
<item>
<element1>value1</element1>
<element2>value2</element2>
value3</element3>
<element4>value4</element4>
</item>
我可以分析這個錯誤的文件沒有死?也許從解析器中刪除這個項目併發出警告(而不是死!)或以某種方式忽略錯誤?
不,你不能分析畸形的XML。你需要說服誰來創建數據來正確地完成它,或者在你處理它之前自己修復它。錯誤總是相似嗎? – Borodin 2015-03-13 13:32:43
不,它們是變量......我認爲它來自源系統的開發人員。如果他們犯錯誤,我會得到格式不正確的XML。 – netdjw 2015-03-13 13:43:51
不要認爲它是XML。把它看作是發起者發明的專有語法。爲此語法編寫語法,如有必要,對其進行逆向工程,然後爲此語法編寫解析器。昂貴,但完全可行。如果你想要一個更便宜的選擇,說服供應商採用XML:使用標準可以節省每個人的錢。 – 2015-03-13 14:38:01