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 :

  1. 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éthode convertTemplate(sourcePath, data, options, outputPath).
  2. 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).
  3. 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).
  4. Invoquez la méthode convertTemplate(sourcePath, data, options, outputPath) et passez-lui sourcePath, data, options, et outputPath. 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

  1. 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.

  2. 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 est false, la casse sera ignorée. La valeur par défaut est true. Mettre false simplifie la gestion des noms incohérents.

Subscribe to Aspose Product Updates

Get monthly newsletters & offers directly delivered to your mailbox.