Vorlage in HTML umwandeln mit Aspose.HTML for Java
Dieser Artikel beschreibt, wie Sie Aspose.HTML for Java verwenden, um ein HTML-Dokument auf der Grundlage einer Vorlage zu erstellen und es mit Daten aus verschiedenen Quellen, wie XML oder JSON, zu füllen. Mit der Syntax der Inline-Ausdrücke können Sie Datenquellen effizient mit Ihrer HTML-Vorlage abgleichen und Inhalte dynamisch generieren.
Aspose.HTML for Java bietet eine Reihe von convertTemplate() Methoden, die verwendet werden, um eine HTML-Vorlage in ein HTML-Dokument zu konvertieren. Die Methoden nehmen mehrere Parameter entgegen (z.B. Pfade zum Template und zur Datenquelle, ein Objekt von TemplateLoadOptions und einen Pfad zum HTML-Ergebnis) und geben das ausgefüllte HTML-Dokument zurück.
Verständnis von Template Markup
Eine HTML-Vorlage ist eine Standard-HTML-Datei, die einige spezielle Inline-Ausdrücke enthält. Diese Ausdrücke verwenden doppelte geschweifte Klammern {{ }}, um Daten aus der Eingabedatenquelle auf bestimmte Teile des HTML-Dokuments abzubilden. Bei der Verarbeitung werden diese Schablonenmarkierungen durch entsprechende Datenwerte ersetzt, wobei die nachstehenden Regeln gelten.
Inline-Ausdrücke Syntax
Nachfolgend finden Sie eine Liste der unterstützten Syntax für Inline-Ausdrücke.
{{ … }} - datenbindender Ausdruck
Der Datenbindungsausdruck wird verwendet, um Werte von Kontrollelementen auf der Grundlage der in der Datenquelle enthaltenen Informationen festzulegen.
Im Folgenden wird die grundlegende Syntax des Datenbindungsausdrucks beschrieben:
{{ data-binding expression }}
In der folgenden Demo wird gezeigt, wie der Datenbindungsausdruck verwendet wird, um Informationen aus der XML-Datenquelle zu erhalten.
XML-Datenquelle
1<Data>
2<FirstName>John</FirstName>
3<LastName>Doe</LastName>
4<Address>
5 <City>Chicago</City>
6 <Street>Oakmound Drive</Street>
7 <Number>100</Number>
8</Address>
9</Data>
Der Datenbindungsausdruck in der HTML-Seitenvorlage:
HTML-Vorlage
Diese HTML-Vorlage demonstriert die Verwendung von Inline-Ausdrücken für die Datenbindung. Sie enthält eine Tabelle mit zwei Spalten: “Person” und “Address” Die Spalte “Person” zeigt dynamisch Daten für {{FirstName}} und {{LastName}} aus der Datenquelle an, während die Spalte “Address” {{Address.Street}}, {{Address.Number}} und {{Address.City}} anzeigt. Inline-Ausdrücke werden mit geschweiften Klammern definiert.
1<table border=1>
2 <tr>
3 <th>Person</th>
4 <th>Address</th>
5 </tr>
6 <tr>
7 <td>{{FirstName}} {{LastName}}</td>
8 <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
9 </tr>
10</table>
{{#foreach … }} - Ausdruck der foreach-Richtlinie
Der Ausdruck der foreach-Direktive wird verwendet, um in Kombination mit dem Datenbindungsausdruck durch die Liste der Elemente zu iterieren.
Die folgende Demo zeigt, wie man alle Personen aus der Datenquelle holt und eine Vorlage ausfüllt:
XML-Datenquelle
1<Data>
2 <Persons>
3 <Person>
4 <FirstName>John</FirstName>
5 <LastName>Doe</LastName>
6 <Address>
7 <Number>100</Number>
8 <Street>Oakmound Drive</Street>
9 <City>Chicago</City>
10 </Address>
11 <Phone1>773-349-7747</Phone1>
12 <Phone2>708-252-9790</Phone2>
13 </Person>
14 <Person>
15 <FirstName>Jack</FirstName>
16 <LastName>Fox</LastName>
17 <Address>
18 <Number>355</Number>
19 <Street>Haul Road</Street>
20 <City>San Francisco</City>
21 </Address>
22 <Phone1>650-942-7641</Phone1>
23 </Person>
24 <Person>
25 <FirstName>Sherlock</FirstName>
26 <LastName>Holmes</LastName>
27 <Address>
28 <Number>45</Number>
29 <Street>Baker str.</Street>
30 <City>London</City>
31 </Address>
32 <Phone1>012-5146-564</Phone1>
33 </Person>
34 </Persons>
35</Data>
Der Ausdruck foreach directive in der HTML-Seitenvorlage:
HTML-Vorlage
Das Attribut “data_merge” gibt an, dass die Datenquelle eine Liste von Objekten ist und die Tabelle für jedes Objekt in der Liste wiederholt werden soll. Die Ausdrücke innerhalb der Vorlage, wie {{FirstName}}, {{LastName}}, {{Address.Street}} und {{Address.Number}}, geben die Felder der Datenquelle an, die in die entsprechenden Zellen der Tabelle eingefügt werden sollen.
1<table border=1 data_merge='{{#foreach Persons.Person}}'>
2 <tr>
3 <th>Person</th>
4 <th>Address</th>
5 </tr>
6 <tr>
7 <td>{{FirstName}} {{LastName}}</td>
8 <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>
9 </tr>
10</table>
Bitte beachten Sie, dass die aktuelle Implementierung den Ausdruck foreach directive nur für die folgende Liste von HTML-Elementen unterstützt: DIV, OL, UL und TABLE.
Datenquelle
Wie bereits erwähnt, kann die Datenquelle in den Formaten XML und JSON dargestellt werden. Im Folgenden finden Sie Beispiele für beide Datenquellen:
XML Data Source
1 <Data>
2 <FirstName>John</FirstName>
3 <LastName>Doe</LastName>
4 <Address>
5 <City>Chicago</City>
6 <Street>Oakmound Drive</Street>
7 <Number>100</Number>
8 </Address>
9</Data>
JSON Data Source
1{
2 "FirstName": "John",
3 "LastName": "Doe",
4 "Address": {
5 "City": "Chicago",
6 "Street": "Oakmound Drive",
7 "Number": "100"
8 }
9 }
Vorlage in HTML umwandeln
Wenn Sie in Ihrem Fall eine Vorlage erstellen und Daten im laufenden Betrieb angeben wollen, müssen Sie einige Schritte beachten:
- Bereiten Sie eine JSON- oder XML-Datenquelle vor und speichern Sie sie in einer Datei. Der
TemplateData() Konstruktor nimmt den Pfad zu dieser Datendatei und erstellt ein Datenobjekt (
data
) für die MethodeconvertTemplate(sourcePath, data, options, outputPath)
. - Bereiten Sie eine HTML-Vorlage vor und speichern Sie sie in einer Datei. Die Methode convertTemplate() erhält den Pfad der Vorlagendatei als Parameter (
sourcePath
). - Initialisierung einer Instanz der Klasse
TemplateLoadOptions, um festzustellen, ob die Namen der Vorlagen und der Datenelemente übereinstimmen, unabhängig von der Groß- und Kleinschreibung (
options
). - Rufen Sie die Methode
convertTemplate(
sourcePath
,data
,options
,outputPath
) auf und übergeben Sie dafürsourcePath
,data
,options
undoutputPath
.outputPath
ist ein Pfad zum Speichern der mit Daten gefüllten Vorlagendatei. Die Methode convertTemplate() ersetzt die Ausdrücke in der Vorlage durch Werte aus der Datenquelle und erzeugt ein ausgefülltes HTML-Dokument.
1// Prepare a JSON data-source and save it to a file
2String data =
3 "{\n" +
4 " 'FirstName': 'John',\n" +
5 " 'LastName': 'Smith',\n" +
6 " 'Address': {\n" +
7 " 'City': 'Dallas',\n" +
8 " 'Street': 'Austin rd.',\n" +
9 " 'Number': '200'\n" +
10 " }\n" +
11 "}";
12try (java.io.FileWriter fileWriter = new java.io.FileWriter("data-source.json")) {
13 fileWriter.write(data);
14}
15
16// Prepare an HTML Template and save it to a file
17String template =
18 "<table border=1>\n" +
19 " <tr>\n" +
20 " <th>Person</th>\n" +
21 " <th>Address</th>\n" +
22 " </tr>\n" +
23 " <tr>\n" +
24 " <td>{{FirstName}} {{LastName}}</td>\n" +
25 " <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>\n" +
26 " </tr>\n" +
27 "</table>\n";
28try (java.io.FileWriter fileWriter = new java.io.FileWriter("template.html")) {
29 fileWriter.write(template);
30}
31
32// Convert Template to HTML
33com.aspose.html.converters.Converter.convertTemplate(
34 "template.html",
35 new com.aspose.html.converters.TemplateData("data-source.json"),
36 new com.aspose.html.loading.TemplateLoadOptions(), "document.html"
37);
Technische Empfehlungen
Überprüfen Sie immer das Format der Datenquelle (XML/JSON) und stellen Sie die Konsistenz mit den Vorlagenmarkierungen sicher, um Fehlanpassungen zu vermeiden.
Verwenden Sie TemplateLoadOptions.NamesAreCaseSensitive, um die Groß- und Kleinschreibung während der Datenbindung zu steuern. Wenn der Wert
true
ist, wird beim Abgleich die Groß- und Kleinschreibung beachtet; wenn erfalse
ist, wird die Groß- und Kleinschreibung ignoriert. Der Standardwert isttrue
. Die Einstellungfalse
vereinfacht die Handhabung inkonsistenter Benennungen.