Wie kann ich die split eine große xml-Datei?
Wir exportieren "Datensätze", um eine xml-Datei, einer von unseren Kunden hat sich beschwert, dass die Datei zu groß für Ihre anderen system zu verarbeiten. Deshalb brauche ich zum aufteilen der Datei, während die Wiederholung der "header-section" in der jede der neuen Dateien.
So, ich bin auf der Suche nach etwas, lassen Sie mich definieren einige XPath-Angaben zum Abschnitt(s), die immer ausgegeben werden, und anderen xpath für die "Zeilen" mit einem parameter sagt, wie viele Zeilen zu setzen, in der jede Datei und wie benennen Sie die Dateien.
Bevor ich mit dem schreiben beginnen einige benutzerdefinierte .net-code, dies zu tun; gibt es eine standard-command-line-tool, das unter windows funktionieren, tut es?
(Weil ich weiß, wie die Programmierung in C#, ich bin mehr einbezogen werden, code zu schreiben, dann versuchen, Sie zu verwirren mit komplexen xsl etc, aber ein "selbst -" Lösung besser wäre dann benutzerdefinierten code.)
InformationsquelleAutor Ian Ringrose | 2010-12-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
"gibt es eine standard-command-line-tool, das unter windows funktionieren, tut es das?"
Ja. http://xponentsoftware.com/xmlSplit.aspx
InformationsquelleAutor bill seacham
Gibt es keine Allzweck-Lösung, denn es gibt so viele verschiedene Möglichkeiten, dass Ihre Quell-XML aufgebaut sein.
Es ist relativ einfach zu bauen, eine XSLT-Transformation, die Ausgabe wird eine Scheibe von einem XML-Dokument. Zum Beispiel, angesichts dieser XML:
können Sie die Ausgabe einer Kopie der Datei enthält nur
data
Elemente innerhalb eines bestimmten Bereichs mit dieser XSLT:(Hinweis, durch die Art und Weise, denn dies ist auf der Grundlage der Einheitsmatrix, es funktioniert sogar, wenn
header
ist nicht das top-level element.)Müssen Sie noch zählen, die
data
Elemente in der XML-Quelle, und führen Sie die Transformation wiederholt mit den Werten von$startPosition
und$endPosition
sind angemessen für die situation.Sie müssten Ihr eigenes Programm schreiben, um es auszuführen - unter anderem hat das Programm zum zählen der Elemente, die Sie sind, paging, so dass er weiß, Wann zu stoppen.
InformationsquelleAutor Robert Rossney
Ersten download-xml-editor foxe von diesem link http://www.firstobject.com/foxe242.zip
Das video http://www.firstobject.com/xml-splitter-script-video.htm
Video erklärt, wie split-code funktioniert.
Es ist ein Skript-code auf dieser Seite (beginnt mit
split()
) kopieren Sie den code und auf die xml-editor-Programm zu machen, ein "Neues Programm" unter dem "Datei". Fügen Sie den code, und speichern Sie es. Der code ist:Ändern Sie die Fett markierten (oder ** ** markierten) Felder für Ihre Bedürfnisse. (dies drückt sich auch auf der video-Seite)
Auf dem xml-editor-Fenster mit der rechten Maustaste und klicken Sie auf AUSFÜHREN (oder einfach F9). Es gibt output-bar am Fenster, wo es zeigt die Anzahl der Dateien, die generiert werden.
Hinweis:
name der Eingabedatei werden kann
"C:\\Users\\AUser\\Desktop\\a_xml_file.xml"
(doppelte Schrägstriche)und die Ausgabe-Datei
"C:\\Users\\AUser\\Desktop\\anoutputfolder\\piece" + nFileCount + ".xml"
InformationsquelleAutor ewroman
Wie bereits erwähnt die
xml_split
aus dem Perl - Paket XML::Twig macht einen guten job.Nutzung
Ohne Argumente
xml_split
erstellt eine Datei pro top-level-Knoten-Kind.Gibt es Parameter geben die Anzahl der Elemente, die Sie pro Datei (
-g
) oder Ungefähre Größe (-s <Kb|Mb|Gb>
).Installation
Windows -
Schauen Sie hier
Linux
sudo apt-get install xml-twig-tools
InformationsquelleAutor loomi
Es ist nichts gebaut, kann diese situation leicht.
Dein Ansatz klingt vernünftig, aber ich würde wahrscheinlich beginnen mit einem "Skelett" - Dokument mit Elementen, die wiederholt werden muss, und erzeugt mehrere Dokumente mit der "Aufzeichnungen".
Update:
Nach ein bisschen Graben, fand ich diese Artikel beschreibt eine Methode zum teilen von Dateien mit Hilfe von XSLT.
InformationsquelleAutor Oded
xml_split - split von großen XML-Dokumenten in kleinere Einheiten,
http://www.perlmonks.org/index.pl?node_id=429707
http://metacpan.org/pod/XML::Twig
InformationsquelleAutor Gfy
Verwendung von Ultraedit basiert auf https://www.ultraedit.com/forums/viewtopic.php?f=52&t=6704
Alle, die ich aufgenommen wurde einige XML-header-und footer-bits
Die erste und die Letzte Datei müssen manuell behoben (oder entfernen Sie das root-element von Ihrer Quelle).
InformationsquelleAutor Steve Black