2011-09-23 34 views
10

Come posso convalidare un file XML di grandi dimensioni (> 100mb)? Provo ad aprirlo con IE, FX & GC e si blocca o non fa nulla.Come convalidare file XML di grandi dimensioni (> 100 MB)

+0

possibile duplicato del [editor di testo per aprire grande (gigante, enormi, grandi) i file di testo] (http://stackoverflow.com/questions/159521/text-editor-to-open-big- file giganti-di grandi dimensioni di testo) – Jehof

+1

@Jehof No, per niente. Un editor di testo è diverso da un validatore. – phihag

+0

@phihag per essere onesti, l'OP * ha * parlato dell'apertura del file in IE e Firefox, quindi non è chiaro se l'OP significa convalidare visivamente o validare in modo manuale. –

risposta

8

È possibile provare a utilizzare un validatore da riga di comando, ad esempio xmlstarlet:

$ xmlstarlet validate bigfile.xml 
+0

Potrebbe funzionare, ma quel progetto sembra essere morto, quindi non aspettatevi aggiornamenti. Vedi http://xmlstar.sourceforge.net/ –

+0

+1 Poiché questo è l'unico che non richiede Windows. Ed è gratis :) –

+0

'sel' tuttavia non funziona :-(http://stackoverflow.com/questions/33653844/xmlstarlet-sel-on-large-file –

0

In Java, e sono sicuro che in altre lingue, ci sono soluzioni per la lettura in un intero file XML e la trasformazione come DOM completo e soluzioni che elaborano l'XML come uno stream in modo guidato dagli eventi. Vorresti il ​​secondo tipo di soluzione, che non carica mai l'intero file in memoria. Vedere SAX per una soluzione Java al problema.

0

Si potrebbe provare l'editor XML EditiX.

Se si carica il documento in EditiX e ci sono problemi con l'XML, ad es. tag di apertura e chiusura non corrispondenti, l'editor caricherà comunque il file e nell'angolo in basso a destra dello schermo vedrai un numero visualizzato in rosso ad es. un "5" rosso significa che ci sono cinque errori nel documento.

Non ho provato un documento da 100 MB ma ho fatto più di 15mb e mi sembrava abbastanza felice.

C'è una versione gratuita.

0

in aggiunta al commento di dj_segfault sulla risposta di phihag, xmlstarlet per fortuna NON è morto. Hanno appena released Version 1.3

Se si desidera un commandlinetool decente in grado di manipolare xml, xmlstarlet è perfetto (e piuttosto veloce).

+1

IMHO, \t *** Questo dovrebbe essere un commento *** – Kiquenet

5

L'unico strumento che conosco che combina un visualizzatore di file di grandi dimensioni e un validatore XML per file enormi è XML ValidatorBuddy. Il visualizzatore di file non carica il file completo in una volta ma è possibile scorrere e c'è anche la colorazione della sintassi XML applicata. La convalida utilizza il parser SAX di Xerces e il tuo documento con> 100mb non dovrebbe essere un problema.

0

di Windows versione di XML Starlet:

> xml val <xmlfile.xml> 
0

È inoltre possibile utilizzare il plugin Strumenti XML in Nodepad ++, è ha una funzione "Controlla sintassi XML ora". È semplice da scaricare e se non usi già Notepad ++, è un buon motivo per iniziare!

4

xmllint --stream lavorato su un file 1.2Gb di disco con memoria limitata a 500Mb:

ulimit -Sv 500000 
xmllint --stream a.xml 

Senza --stream, Linux uccide il processo, e senza ulimit, le mie marmellate di computer.

non ero in grado tuttavia di ottenere in uscita dal --xpath quando si utilizza --stream: How to do command line XPath queries in huge XML files?

testato in Ubuntu 14.04, la versione xmllint 20901.

+1

Non vale nulla che' xmllint' sia multipiattaforma. Io lo uso su Windows. Confermo che '--stream' Anche l'opzione funziona bene, non ho nemmeno bisogno di impostare un limite di memoria per elaborare 3.5 GB, tuttavia la libreria .net sembra essere 2x più veloce – Jarekczek

+1

@Jarekczek grazie per avermi fatto sapere! Non è necessario il 'ulimit' in Linux con '--stream', sto solo mostrando alla gente come non far funzionare le loro macchine/test che in realtà non usa molta memoria ;-) –

-1

Su Windows è possibile scrivere una semplice applicazione basata sulla piattaforma .net. La classe System.Xml.XmlReader è in grado di convalidare file enormi. Un esempio è in questa risposta: Validating an XML against referenced XSD in C#

+0

Contestualmente, un" scrivi il tuo programma di validazione xml in .NET " la risposta non ha molto senso quando ci sono già programmi per tutti i sistemi operativi per fare ciò. – pydsigner

+0

L'imballaggio di un'applicazione di terze parti insieme al programma è problematico. L'utilizzo di una libreria del sistema operativo integrata, ciò che suggerisco, è molto più semplice. Dato che lo stackoverflow è per i programmatori, spero che tali suggerimenti si presentino sempre. -1 non mi preoccupa, ma per favore non rendere questa risposta invisibile. – Jarekczek

+0

se il tuo primo pensiero era quello di convalidare XML in un browser web, come lo erano gli OP, quasi certamente non stai provando a spedire una soluzione con un programma. La tua risposta non si applica bene alla situazione. – pydsigner

0

Liquid Studio Community Edition contiene un editor di file di grandi dimensioni che può essere utilizzato anche per convalidare i file XML. In realtà non ha un limite massimo per le dimensioni dei file che è possibile aprire. I file di Terra-byte si aprono immediatamente su macchine a bassa specifica, ed è gratuito.

Liquid Studio Large File Editor

Problemi correlati