Convertir un modèle en HTML à l'aide d'Aspose.HTML for Java
Cet article décrit comment utiliser Aspose.HTML for Java afin de créer un document HTML basé sur un modèle et de le remplir avec des données provenant de diverses sources, telles que XML ou JSON. En utilisant la syntaxe des expressions en ligne, vous pouvez efficacement faire correspondre les sources de données à votre modèle HTML et générer dynamiquement du contenu.
Aspose.HTML for Java propose un ensemble de méthodes convertTemplate() qui sont utilisées pour convertir un modèle HTML en un document HTML. Ces méthodes prennent plusieurs paramètres (par exemple, les chemins d’accès au modèle et à la source de données, un objet TemplateLoadOptions et un chemin d’accès au document HTML résultant) et renvoient le document HTML rempli.
Comprendre le balisage des modèles
Un modèle HTML est un fichier HTML standard qui contient des expressions en ligne spéciales. Ces expressions utilisent des doubles accolades {{ }} pour faire correspondre des données provenant de la source de données d’entrée à des parties spécifiques du document HTML. Lors du traitement, ces marqueurs de modèle sont remplacés par les valeurs de données correspondantes, conformément aux règles mentionnées ci-dessous.
Syntaxe des expressions en ligne
Voici la liste des expressions en ligne prises en charge.
{{ … }} – expression de liaison de données
L’expression data-binding est utilisée pour définir les valeurs de l’élément de contrôle sur la base des informations contenues dans la source de données.
Voici la syntaxe de base de l’expression de liaison de données :
{{ expression de liaison de données }}
La démonstration suivante montre comment utiliser l’expression data-binding pour obtenir des informations à partir de la source de données XML.
**Source de données XML
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>
L’expression de liaison de données dans le modèle de page HTML :
HTML Template
Ce modèle HTML démontre l’utilisation d’expressions en ligne pour la liaison de données. Il présente un tableau avec deux colonnes : “Person” et “Address” La colonne “Person” affiche dynamiquement les données pour {{FirstName}} et {{LastName}} à partir de la source de données, tandis que la colonne “Address” affiche {{Address.Street}} {{Address.Number}} et {{Address.City}}. Les expressions en ligne sont définies à l’aide de la syntaxe des accolades.
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 … }} – expression de la directive foreach
L’expression directive foreach est utilisée pour parcourir la liste des éléments en combinaison avec l’expression data-binding.
La démonstration suivante montre comment récupérer toutes les personnes de la source de données et remplir un modèle :
**Source de données XML
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>
L’expression de la directive foreach dans le modèle de page HTML :
HTML Template
L’attribut data_merge
spécifie que la source de données est une liste d’objets et que le tableau doit être répété pour chaque objet de la liste. Les expressions contenues dans le modèle, telles que {{FirstName}}, {{LastName}}, {{Address.Street}} et {{Address.Number}}, indiquent les champs de la source de données qui doivent être insérés dans les cellules correspondantes du tableau.
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>
Veuillez noter que l’implémentation actuelle ne prend en charge l’expression avant chaque directive que pour la liste suivante d’éléments HTML : DIV, OL, UL et TABLE.
Source des données
Comme indiqué précédemment, la source de données peut être représentée dans les formats XML et JSON. Voici des exemples de ces deux sources de données :
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 }
Convertir un modèle en HTML
Si votre cas implique la création d’un modèle et la spécification de données à la volée, vous devez suivre quelques étapes :
- Préparer une source de données JSON ou XML et la sauvegarder dans un fichier. Le constructeur
TemplateData() prend le chemin de ce fichier de données et crée un objet de données (
data
) pour la méthodeconvertTemplate(sourcePath, data, options, outputPath)
. - Préparer un modèle HTML et le sauvegarder dans un fichier. La méthode convertTemplate() prend en paramètre le chemin du fichier de template (
sourcePath
). - Initialiser une instance de la classe
TemplateLoadOptions pour déterminer si les noms du modèle et de l’élément de données correspondent, indépendamment de la casse (
options
). - Invoquez la méthode
convertTemplate(
sourcePath
,data
,options
,outputPath
) et passez-luisourcePath
,data
,options
, etoutputPath
.outputPath
est un chemin pour l’enregistrement du fichier de modèle rempli de données. La méthode convertTemplate() remplace les expressions du modèle par les valeurs de la source de données, générant ainsi un document HTML rempli.
1// Populate an HTML template with structured JSON data using Java
2
3// Prepare a JSON data-source and save it to a file
4String data =
5 "{\n" +
6 " 'FirstName': 'John',\n" +
7 " 'LastName': 'Smith',\n" +
8 " 'Address': {\n" +
9 " 'City': 'Dallas',\n" +
10 " 'Street': 'Austin rd.',\n" +
11 " 'Number': '200'\n" +
12 " }\n" +
13 "}";
14try (java.io.FileWriter fileWriter = new java.io.FileWriter("data-source.json")) {
15 fileWriter.write(data);
16}
17
18// Prepare an HTML Template and save it to a file
19String template =
20 "<table border=1>\n" +
21 " <tr>\n" +
22 " <th>Person</th>\n" +
23 " <th>Address</th>\n" +
24 " </tr>\n" +
25 " <tr>\n" +
26 " <td>{{FirstName}} {{LastName}}</td>\n" +
27 " <td>{{Address.Street}} {{Address.Number}}, {{Address.City}}</td>\n" +
28 " </tr>\n" +
29 "</table>\n";
30try (java.io.FileWriter fileWriter = new java.io.FileWriter("template.html")) {
31 fileWriter.write(template);
32}
33
34// Convert Template to HTML
35com.aspose.html.converters.Converter.convertTemplate(
36 "template.html",
37 new com.aspose.html.converters.TemplateData("data-source.json"),
38 new com.aspose.html.loading.TemplateLoadOptions(), "document.html"
39);
Recommandations techniques
Il faut toujours valider le format de la source de données (XML/JSON) et s’assurer de la cohérence avec les marqueurs de modèles pour éviter les incohérences.
Utilisez TemplateLoadOptions.NamesAreCaseSensitive pour contrôler la sensibilité à la casse lors de la liaison des données. Si la valeur est
true
, la correspondance est sensible à la casse ; si elle estfalse
, la casse sera ignorée. La valeur par défaut esttrue
. Mettrefalse
simplifie la gestion des noms incohérents.