Heim > Artikel > Backend-Entwicklung > Detaillierte Einführung in die Vorteile der Konvertierung von Daten in das XML-Format
Wir stoßen häufig auf Situationen, in denen wir in verschiedenen Formaten gespeicherte oder übertragene Daten verarbeiten müssen (von durch Kommas oder Tabulatoren getrennten Dateien bis hin zu besser ladbaren Formaten) und Sie auf jedes Format Parser reagieren müssen. Dieser Mangel verlangsamt die Entwicklung und kann zu Fehlern führen. Eine Lösung besteht darin, Daten in gängigen Formaten in XML-Dokumente zu konvertieren und diese dann zu speichern, zu verarbeiten oder in andere Formate zu konvertieren.
Ein Beispiel
Mittlerweile gibt es viele Datenformate, die Funktionen zum Speichern, Exportieren, Importieren und Übertragen von Daten innerhalb oder zwischen Software implementieren. Am gebräuchlichsten sind durch Trennzeichen getrennte Formate, z. B. durch Kommas oder Tabulatoren getrennte Datenformate und Datenformate mit fester Länge. Angenommen, wir haben ein Adressbuchprogramm, das Funktionen zum Exportieren von Daten in durch Kommas getrennte Formate und Formate mit fester Länge bietet.
Im kommagetrennten Format werden Kommas verwendet, um verschiedene Felder im selben Datensatz zu trennen, wie in Listing A gezeigt. Im Datenformat mit fester Länge sollte jedes Feld des Datensatzes eine Standardlänge haben. Listing B zeigt ein Adressbuch im Format fester Länge.
XML-Dokument erstellen
Jetzt analysieren wir die Eingabedaten und konvertieren sie in ein XML-Dokument. Das XML-Dokument (z. B. org.w3c.dom.Document) ist der primitive Datentyp des gesamten Document Object Model (DOM) und bietet Zugriff auf Dokumentdaten.
Sie können ein Dokument erstellen, das Ihren Daten entspricht, indem Sie die Methode buildDocument(InputStream is) ausführen, wie in Codeliste C gezeigt. Diese Methode liest den Eingabedatenstrom Zeile für Zeile und analysiert ihn Zeile für Zeile entsprechend dem vorgegebenen Raster.
Wenn Sie durch Trennzeichen getrennte Formatdaten analysieren möchten, müssen Sie eine Instanz der Klasse mit dem Konstruktor PlainTextToXmlFormatter(String[ ] colName,String delim) erstellen, dessen Trennzeichen eine beliebige Zeichenfolge sein kann. Im Falle eines Formats mit fester Länge sollten Sie den zweiten Konstruktor PlainTextToXmlFormatter(String[ ] colName,int[ ] colLen) verwenden, der ein Array von Feldlängen als einen Parameter akzeptiert. In dem von uns angegebenen Adressbuch-Beispiel beträgt die Länge jedes Felds 10, 10, 30 bzw. 10 Zeichen. Der Parameter colName ist ein Array, das die Namen der Zieldatensätze speichert. In unserem Beispiel sind die Namen Vorname (firstName), Nachname (lastName), E-Mail und Telefonnummer (phone).
Der eigentliche Parsing-Prozess der Konvertierung von Datenzeilen in Datensymbole ist der Prozess der Ausführung der Methode getStringArray(String read, String delim) oder parseFixedLengthMessage(String read, int[ ] colLen). Der Rückgabewert ist ein String-Array, das durch Zerlegen der gegebenen Eingabe mit den beiden oben genannten Methoden erhalten wird. Wenn das Datenformat falsch ist, wird eine Ausnahme ausgelöst und der Parsing-Fehler wird beendet. Rufen Sie die Methode setSkipError(true) auf, um die Ausnahme zu ignorieren und den Datenanalyseprozess abzuschließen. Durch den Aufruf dieser Methode wird verhindert, dass die Ausnahme ausgelöst wird, das Programm kann aber weiterhin Fehlerinformationen im Fehlerausgabestream ausgeben.
Wenn Zeilen in Tags analysiert werden, werden sie dem XML-Dokument als Elemente des XML-Dokuments hinzugefügt. Jede im Element platzierte Datensatzzeile verfügt über eine Standardnamenszeile. Sie können auch setDataLineName() aufrufen, um einen Namen anzugeben. Jeder Datensatz ist ein Spaltenelement, der Name des Spaltenelements wird vom entsprechenden Klassenkonstruktor bereitgestellt und die untergeordneten Elemente werden dem Zeilenelement hinzugefügt.
Nachdem die Eingabedaten vollständig gelesen wurden, verfügen Sie über ein gültiges XML-Dokument, das Sie weiterverarbeiten können. Da die Daten nun in der bekannten Baumstruktur organisiert sind, ist die Arbeit damit sehr einfach. Sie können dieses Dokument beispielsweise an einen Dritten senden. Sofern der Dritte die Dokumenttypdefinition (Document Type Definition, DTD) des Dokuments kennt, kann er das Dokument problemlos bearbeiten. Sie können auch die Methode writeDocument(Document doc, OutputStream osOut) aufrufen, um dieses Dokument zu speichern. Codelisting D zeigt ein Beispiel für das Speichern eines XML-Dokuments in einer Datei.
Verwenden Sie die XSLT-Transformation, um Daten anzuzeigen
Sie können XML-Daten auch in andere Formate konvertieren und verschiedene Ansichten zur Darstellung ihres Inhalts verwenden. Die einfachste Methode ist die Verwendung der XSLT-Transformation, die eine leistungsstarke baumorientierte Transformationssprachenimplementierung bereitstellt, die XML-Instanzen mithilfe eines Vokabulars in einfachen Text, HTML oder XML mithilfe anderer Vokabulare umwandeln kann.
Für eine bestimmte XML-Eingabe können Sie die XSLT-Sprache verwenden, um die gewünschte Ausgabe zu erstellen. Sie können beispielsweise XML-Daten in ein HTML-Dokument konvertieren, indem Sie transformData(InputStream xmlIn, InputStream xslIn, OutputStream transfOut) ausführen. Listing E bietet ein Beispiel für eine XSLT-Transformation, während Listing F eine HTML-Ansicht eines Adressbucheintrags bietet.
Datenverwaltung vereinfachen
In diesem Artikel haben wir gelernt, wie Sie häufig verwendete Formatdaten in XML-Dokumente konvertieren, indem wir die Klasse PlainTextToXmlFormatter analysieren. Außerdem haben wir gesehen, wie man XML-Dokumente mithilfe von XSLT-Transformationen in verschiedenen Ansichten darstellen kann. Wenn Sie Daten in verschiedenen Formaten verarbeiten müssen, kann der Einsatz der oben genannten Technologie eine gute Lösung sein, wodurch Sie wertvolle Zeit sparen und die Fehlerwahrscheinlichkeit verringern.
Das Obige ist eine detaillierte Einführung in die Vorteile der Konvertierung von Daten in das XML-Format. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn).