Erzeugung von XML-Daten


Hier wird vorgestellt, wie man beliebige Zahlenwerte und Texte mit Hilfe eines → Tabellen-Kalkulations-Programms in XML-Daten umwandeln kann.

Das hat praktische Bedeutung: Man kann Daten aus vielen verschiedenen Quellen in ein Tabellen-Kalkulations-Dokument importieren und daraus mit den hier gezeigten Methoden selbst XML-Daten herstellen.

Voraussetzung: Sie sollten wissen, wie ein Text aus typischen → XML-Daten aussieht.

Beispiel-Daten


In der Praxis kann man Daten aus zahlreichen Quellen importieren und die Tabellen-Kalkulation zur Umwandlung in XML-Dateien verwenden. Hier werden zur Simulation verschiedener Daten 3 Beispiele vorgestellt.



 AB
2point
3xy
4 =GANZZAHL(ZUFALLSZAHL()*10-5) =ZUFALLSZAHL()*10-5
 ⇓⇓ ⇓⇓
6 =GANZZAHL(ZUFALLSZAHL()*10-5) =ZUFALLSZAHL()*10-5

Mit Taste F9 werden neue Zufalls-Zahlen berechnet.


Diese Formel berechnet zufällige Text-Daten:
=ZEICHEN(GANZZAHL(ZUFALLSZAHL()*27+65)) & ZEICHEN(GANZZAHL(ZUFALLSZAHL()*27+97)) & ZEICHEN(GANZZAHL(ZUFALLSZAHL()*96+32)) & ZEICHEN(GANZZAHL(ZUFALLSZAHL()*96+32))
Man kann die Formel kopieren und in beliebig viele Daten-Zellen eintragen.


Die Statistik Austria bietet zahlreiche interessante Daten zum Download an. Die Dateien mit dem MS-Excel Symbol (rechts) kann man mit allen Versionen von LibreOffice, MS-Excel oder OpenOffice öffnen.


Kontrolle

Wenn eine Spalte später für Rechnungen oder Diagramme verwendet wird, dann sollten sich darin nur Zahlenwerte befinden.

In den Daten sollten sich keine leeren Zellen befinden. Diese werden evtl. je nach Auswertungs-Programm unterschiedlich interpretiert. Ersetzen sie leere Zellen entweder durch die Zahl 0 oder durch einen leeren Text, z.B. mit der Formel =""

In den Daten sollten sich keine Fehler-Werte befinden, z.B. #DIV/0, #NAME, #NV, #WERT, #ZAHL, ...


Nächster Schritt: Import der Basic-Programme zur Aufbereitung der XML-Daten

Basic-Modul


Lösungen

Man kann diese Arbeiten prinzipiell mit den Standard-Funktionen der Tabellen-Kalkulation ausführen. Die Programmierung ist jedoch anspruchsvoll und wird hier nicht vorgestellt.

Eine sinnvolle Alternative ist die Verwendung von Funktionen der Programmiersprache → Basic. Alle dazu notwendigen Programme werden hier vorgestellt.

Voraussetzung: Man muss den Basic-Quelltext in ein Basic-Modul der jeweiligen Tabellen-Kalkulations-Datei importieren.
Details zum Import in → LibreOffice oder → MS-Excel



LibreOffice ist gut geeignet. Achten sie darauf, dass die Zeile
Option VBASupport 1
aktiviert ist: Entfernen sie ein allfälliges ' Kommentar-Zeichen vom Anfang dieser Zeile.

MS-Excel ist gut geeignet. Achten sie darauf, dass die Zeile
' Option VBASupport 1
mit einem führenden Kommentar-Zeichen abgeschaltet ist.
Speichern sie die Kalkulations-Datei mit dem Basic-Modul entweder im klassischen Datei-Format *.xls oder im neuen Format *.xlsm

Die derzeit aktuelle Version von OpenOffice ist nicht geeignet, da sie mit Objekten vom Typ Range nicht korrekt arbeitet.

Anwendung: Erzeugung von XML-Quelltext


Dieser Links stellt ein komplettes Demo-Programme mit fertig installiertem Basic-Modul zum Download zur Verfügung:


 ABDEG
1VorgabenZwischenprodukteEndProdukte
2point=xml_start_tag($A$2) =xml_end_tag($A$2) <?xml version="1.0" encoding="utf-8" ?>
3xy   <data>
41212,34 =xml_element(A$3;A4)=xml_element(B$3;B4) =xml_concat($D$2;D4:E4;$E$2)
 ⇓⇓ ⇓⇓⇓⇓ ⇓⇓⇓⇓
62323,45 =xml_element(A$3;A6)=xml_element(B$3;B6) =xml_concat($D$2;D6:E6;$E$2)
7     </data>

Statischer Text:

3 Zeilen des EndProdukts wurden nicht mit Funktionen erzeugt sondern manuell als Text eingetragen:

Die 1. Zeile jeder XML-Datei muss die XML-Deklaration enthalten (hier in G2). Sie muss genauso lauten wie hier angegeben. Davor darf kein anderer Text stehen.

Die erste (G3) und die letzte Daten-Zeile (G7) müssen das top-Element der Datei angeben, hier <data> ... </data>
Man muss genau 1 Element angeben. Alle anderen Daten sind darin eingebettet und dürfen kein weiteres Element dieses Namens enthalten.


Funktion xml_end_tag() erzeugt den Text eines XML-End-Elements. Beispiel:
</point>
Man muss den Namen des Elements als Argument angeben. Sinnvoll ist nur der gleiche Name, welcher in der Funktion xml_start_tag() verwendet wurde.

Mit diesen beiden Funktionen wird typisch 1 Element der Datei erzeugt (hier 1 komplettes Element <point>...</point> mit allen darin enthaltenen Sub-(Child)-Elementen und deren Daten.


Funktion xml_concat() verknüpft alle angegebenen Argumente zu einem einzigen Text (= zu einer Zeile des XML-Quelltextes)

Diese Funktion akzeptiert beliebig viele Argumente beliebiger Typen. Im Beispiel werden je 3 Argumente verwendet (Start-Element, Bereich aller Daten-Elemente, End-Element).

Diese Funktion wird von der aktuellen Version von OpenOffice nicht korrekt ausgeführt. Wer OpenOffice verwenden möchte, kann die gesamte Funktion xml_concat() aus dem Basic-Quelltext löschen und die einzelnen Text-Teile mit dem Operator & der Tabellen-Kalkulation verketten.
Die Formel in Zelle G4 kann dann z.B. so lauten:
=D2 & D4 & E4 & E2
Mit ähnlichen Formeln kann man die meisten hier benötigten Aufgaben auch ohne Basic-Funktionen programmieren. Mit den Standard-Methoden der Tabellen-Kalkulation ist das jedoch meist nur speziell lösbar. Eine allgemeine Lösung ist sehr aufwändig, jedenfalls in der Anwendung nicht so bequem.

Das Basic-Modul enthält einige weitere Funktionen, die im Quelltext kommentiert sind.


Muster einer fertigen XML-Datei mit Zahlen-Daten

Die Daten wurden mit Zufalls-Generator erzeugt. Beachten sie den Dezimal-Punkt.
<?xml version="1.0" encoding="utf-8" ?>
<data>
<point><x>-2.73</x><y>1.14</y></point>
<point><x>4</x><y>2.24</y></point>
<point><x>-3.5</x><y>3.38</y></point>
</data>

Muster einer fertigen XML-Datei mit Text-Daten

Die Daten wurden manuell erzeugt, damit man die Codierung von → Umlauten und anderen → Unicode-Sonderzeichen sieht:
<?xml version="1.0" encoding="utf-8" ?>
<data>
<name><first>Anna(</first><second>M&#xFC;ller</second></name>
<name><first>Bert</first><second>Sageder</second></name>
<name><first>C&#xC4;cilia</first><second>Zap</second></name>
</data>