2009-07-17 108 views
17

我從Excel中獲得了一個大文件(90MB)XML文件,保存爲XML Spreadsheet 2003格式。它包含了各種無效數據,從而使火狐吐出了這樣的消息:快速驗證XML /識別破壞點

Line Number 790402, Column 65: 
<Cell ss:StyleID="s18"><Data ss:Type="String">Here's some data I&#5;?Bnternational</Data></Cell> 

是否有將解析我的XML,告訴我有什麼不對的地方,以同樣的方式到Firefox的工具嗎? Firefox在解析它時速度很慢(大概是因爲它將所有內容都保存在內存中,準備渲染成一個很好的導航樹)。我並不擔心XSD的驗證,只是想知道XML是否格式良好。

+0

的可能重複(http://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool) – kenorb 2015-04-09 19:20:49

+2

不,這不是 - 這個問題明確提到它不是針對XSD進行驗證,而這個問題完全是關於驗證XSD。 – 2015-04-11 19:37:30

回答

36

有一個叫做xmllint的linux命令對此很有幫助。它速度非常快,可以在無需bar hon的情況下處理優秀的文件,並提供有用的驗證錯誤消息。

+2

很酷的東西。即使驗證支持......如果沒有它,我怎麼能活下去? +1 – Boldewyn 2009-07-17 10:19:36

+0

--format選項也非常方便 – skaffman 2009-07-17 10:30:27

2

您可以使用其他語言的功能。例如,Python中的雙線程:

import xml.dom.minidom as dom 
dom.parse ('test.xml') 

這會顯示問題,並且性能很高。我記得有一個XML工具包可以在bash中很好地工作,但我現在找不到這個鏈接。

乾杯,

編輯:This question's answer使用SAX相對於DOM,因爲它會是更好的性能建議。然後準備使用的Python腳本會是這個樣子:

編輯2:我再次想起,該工具是XMLStarlet。當我兩年前使用它時,我發現它非常好。

+0

我也是如此,但對於真正大型的XML文件,您會爲從工具中擠出的每一點性能而感到高興。 – Boldewyn 2009-07-17 11:03:36

2

我總是推薦使用命令行工具XML Starlet

他們提供驗證,查詢,格式,直命令行編輯文件,他們是無價的這樣的工作,或理智檢查證件的,通過的XPath等

10

斬波款款走出其他答案簡單:?XML架構(XSD)驗證工具]

python -c "import sys, xml.dom.minidom as d; d.parse(sys.argv[1])" FILE