2009-07-17 32 views
17

XMLスプレッドシート2003形式で保存されたExcelから大規模なXMLファイル(90MB)を取得しました。 Firefoxはこのようなメッセージを出してくれるように、それは、さまざまな無効なデータが含まれています: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

[XMLスキーマ(XSD)検証ツール?](http://stackoverflow.com/questions/124865/xml-schema-xsd-validation-tool) – kenorb

+2

ないのが重複する可能性、それはありません - この質問は、XSDに対する検証ではなく、XSDの検証に関する問題であることを明示しています。 –

答えて

36

xmllintと呼ばれるLinuxコマンドがあります。それは非常に高速で、barfingせずにすばらしいファイルを扱い、有用な検証エラーメッセージを出します。

+2

クールなもの。妥当性検証さえサポートされています...どうすればそれなしで生きていけるのですか+1 – Boldewyn

+0

--formatオプションも非常に便利です – skaffman

2

他の言語の機能を使用することもできます。例えば、Pythonで2ライナー:

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

これは、問題を示しており、非常にパフォーマンスが高くなります。私はbashの中からかなりうまく機能したXMLツールキットがあったことを覚えていますが、今はそのリンクを見つけることができません。

乾杯、

編集:それはよりパフォーマンスになるだろうので、This question's answerは、DOMの上にSAXを使用して提案しました。すぐに使用できるPythonスクリプトは、このようになります:

編集2:私は再び覚え、ツールがXMLStarletました。私は2年前にそれを使用したとき、それがとてもいいと感じました。

+0

でも、本当に大きなXMLファイルの場合は、ツールから抜け出すことができるあらゆるパフォーマンスに満足しています。 – Boldewyn

2

私はいつもXML Starletコマンドラインユーティリティを推奨します。

など彼らはまっすぐなコマンドラインから、書式設定、文書の編集を照会、検証を提供し、彼らはこの作品の並べ替え、または正気度チェックの文書のための非常に貴重だ、XPathのを介してのセクションをチョッピング

+0

ハハ!あなたは遅すぎます。ちょうどその時を思い出しました。 ;-) – Boldewyn

+0

明らかにあなたに大きな印象を与えました –

+0

3年前、XMLを使い始めたとき、コマンドラインでそれを扱うのは面倒でした。それから、私はXML Starletを見つけました。そして、突然、bashスクリプトでXMLを使って作業するのはすごくうれしくなりました。 – Boldewyn

10

他の答えは単純化:

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

良い1行コマンド! – Martlark

関連する問題