Läuft auf Ihrem Gerät · Ihre Datei verlässt nie Ihr Gerät.
Legen Sie eine XML-Datei mit wiederholten Datensätzen ab – <records><record>…</record>…</records>, einen RSS-Feed, einen Datenbankexport – und erhalten Sie eine CSV mit einer Zeile pro Datensatz. Das Dokument liest der XML-Parser des Browsers, dann wird die längste Liste wiederholter Elemente automatisch gefunden, egal, was sie umschließt – ein Attribut an der Hülle oder Titel und Link eines Feeds neben seinen Einträgen –, und die Ergebniszeile nennt die verwendete Liste.
Jeder Datensatz wird genauso abgeflacht wie bei „JSON in CSV“: Verschachtelte Elemente werden zu Punkt-Spalten (address.city), Attribute zu Spalten mit @ (@id), wiederholte innere Elemente mit eigenen Kindern bekommen nummerierte Spalten (line.0.sku), wiederholte Textelemente werden mit Semikolon verbunden (a;b), und die Kopfzeile ist die Vereinigung aller gefundenen Spalten. Die Werte werden genau so geschrieben, wie das XML sie enthält. Felder mit Kommas, Anführungszeichen oder Zeilenumbrüchen werden nach RFC 4180 in Anführungszeichen gesetzt.
Die CSV ist UTF-8 mit optionaler Byte-Order-Marke für Excel, Sie wählen den Trenner und sehen die ersten 200 Zeilen vor dem Herunterladen. Nichts wird hochgeladen.
Nicht geeignet für: Dokumente mit mehreren Listen von Datensätzen – nur die längste wird zu Zeilen; für eine andere wandeln Sie in JSON um, kopieren diese Liste und wandeln sie mit „JSON in CSV“ um.
Die Zeilen sind die längste Liste wiederholter Elemente irgendwo unterhalb der Wurzel, egal, was sie umschließt. <records count="2"><record>…</record><record>…</record></records> ergibt eine Zeile pro <record>, obwohl die Hülle ein Attribut hat. Ein RSS-Feed ergibt eine Zeile pro <item> mit Spalten wie title, link und pubDate, obwohl Titel und Link des Kanals selbst neben den Einträgen stehen. Die Zeile unter dem Ergebnis nennt die verwendete Liste, zum Beispiel rss.channel.item.
Werte neben dieser Liste, wie der eigene Titel des Feeds, gehören zu keinem Datensatz und werden weggelassen. Enthält ein Dokument mehrere Listen von Datensätzen, wird nur die längste zu Zeilen. Für eine andere wandeln Sie die Datei mit /xml-to-json um, kopieren diese Liste von ihrer [ bis zu ihrer ], fügen sie in /json-to-csv ein und wandeln dort um.
Gibt es kein wiederholtes Element, ist der einzelne Datensatz die eine Zeile, und seine Spalten sind seine eigenen Feldnamen: <records><record><name>Anna</name><stadt>Köln</stadt></record></records> ergibt die Spalten name und stadt. Eine Datei, die mal einen und mal viele Datensätze enthält, behält dadurch dieselbe Kopfzeile – wichtig, wenn ein anderes Programm die Spalten nach Namen liest.
Werte werden genau so geschrieben, wie das XML sie enthält: 1.50 bleibt 1.50, TRUE bleibt TRUE, und ein Element mit NULL ergibt den Text NULL, während ein leeres Element eine leere Zelle ergibt. 007 behält seine Nullen, und Datumsangaben bleiben, wie sie geschrieben sind. Ein Wert, der mit =, +, - oder @ beginnt, bekommt wie bei /json-to-csv einen Apostroph vorangestellt, damit eine Tabellenkalkulation ihn nicht als Formel ausführt.
Wiederholte Kindelemente, die nur Text enthalten, werden mit Semikolons in einer Zelle verbunden; zwei <tag>-Elemente ergeben also a;b. Wiederholte Kindelemente mit eigenen Kindern bekommen nummerierte Spalten wie line.0.sku und line.1.sku. Namensraum-Präfixe bleiben in den Spaltennamen, etwa soap:Body.price. Text, der neben Kindelementen steht, kommt in eine Spalte #text, ohne seine Position zwischen ihnen. Die Datei wird in der Kodierung gelesen, die ihre erste Zeile angibt.
Diese Seite in anderen Sprachen: English · العربية · Français · Español · Русский · Português · 中文 · हिन्दी · Türkçe · עברית · فارسی · اردو · Bahasa Indonesia · বাংলা