Nous rencontrons souvent des situations où nous devons traiter des données enregistrées ou transférées dans différents formats (des fichiers délimités par des virgules ou des tabulations aux formats plus chargeables), et vous devez répondre à chaque analyseur de format. Cette lacune ralentit le développement et peut conduire à des erreurs. Une solution consiste à convertir les données dans des formats couramment utilisés en documents XML, puis à les enregistrer, les traiter ou les convertir dans d'autres formats.
Un exemple
Il existe désormais de nombreux formats de données qui mettent en œuvre des fonctions de sauvegarde, d'exportation, d'importation et de transfert de données au sein ou entre des logiciels. Les plus courants sont les formats délimités, tels que les formats de données délimités par des virgules ou des tabulations et les formats de données de longueur fixe. Supposons que nous ayons un programme de carnet d'adresses qui fournit des fonctionnalités permettant d'exporter des données dans des formats séparés par des virgules et de longueur fixe.
Au format séparé par des virgules, les virgules sont utilisées pour séparer différents champs dans le même enregistrement de données, comme indiqué dans le listing A. Dans un format de données de longueur fixe, chaque champ de l'enregistrement doit avoir une longueur standard. Le listing B montre un carnet d'adresses au format de longueur fixe.
Création d'un document XML
Maintenant, analysons les données d'entrée et convertissons-les en un document XML. Le document XML (c'est-à-dire org.w3c.dom.Document) est le type de données primitif de l'ensemble du modèle objet de document (DOM) et il permet d'accéder aux données du document.
Vous pouvez créer un document correspondant à vos données en exécutant la méthode buildDocument(InputStream is), comme indiqué dans le listing de codes C. Cette méthode lit le flux de données d'entrée ligne par ligne et l'analyse ligne par ligne selon la grille donnée.
Si vous souhaitez analyser des données au format délimité, vous devez créer une instance de la classe avec le constructeur PlainTextToXmlFormatter(String[ ] colName,String delim), dont le délimiteur peut être n'importe quelle chaîne. Dans le cas d'un format de longueur fixe, vous devez utiliser le deuxième constructeur PlainTextToXmlFormatter(String[ ] colName,int[ ] colLen), qui prend un tableau de longueurs de champ comme paramètre. Dans l'exemple de carnet d'adresses que nous avons donné, la longueur de chaque champ est respectivement de 10, 10, 30 et 10 caractères. Le paramètre colName est un tableau qui stocke les noms des enregistrements de données cibles dans l'exemple que nous avons donné, les noms sont le prénom (firstName), le nom (lastName), l'e-mail et le numéro de téléphone (phone).
Le processus d'analyse réel de conversion des lignes de données en symboles de données est le processus d'exécution de la méthode getStringArray(String read, String delim) ou parseFixedLengthMessage(String read, int[ ] colLen). La valeur de retour est un tableau de chaînes, obtenu en décomposant l'entrée donnée par les deux méthodes ci-dessus. Si le format des données est incorrect, une exception sera levée et l'erreur d'analyse se terminera. Appelez la méthode setSkipError(true) pour ignorer l'exception et terminer le processus d'analyse des données. L’appel de cette méthode empêche la levée de l’exception, mais permet toujours au programme d’imprimer les informations d’erreur dans le flux de sortie d’erreur.
Lorsque les lignes sont analysées en balises, elles sont ajoutées au document XML en tant qu'éléments du document XML. Chaque ligne d'enregistrements placée dans l'élément possède une ligne de nom par défaut. Vous pouvez également appeler setDataLineName() pour spécifier un nom. Chaque enregistrement de données est un élément de colonne, le nom de l'élément de colonne est fourni par le constructeur de classe correspondant et les éléments enfants sont ajoutés à l'élément de ligne.
Une fois les données d'entrée entièrement lues, vous disposez d'un document XML valide que vous pouvez poursuivre le traitement. Désormais, puisque les données sont organisées selon la structure arborescente bien connue, leur utilisation est très simple. Par exemple, vous pouvez envoyer ce document à un tiers. Tant que le tiers connaît la définition du type de document (Document Type Definition, DTD) du document, il peut alors facilement traiter le document. Vous pouvez également appeler la méthode writeDocument(Document doc, OutputStream osOut) pour enregistrer ce document. Le listing de codes D donne un exemple d'enregistrement d'un document XML dans un fichier.
Utilisez la transformation XSLT pour afficher les données
Vous pouvez également convertir des données XML dans d'autres formats et utiliser différentes vues pour représenter leur contenu. La méthode la plus simple consiste à utiliser la transformation XSLT, qui fournit une puissante implémentation de langage de transformation orientée arborescence capable de transformer des instances XML utilisant un vocabulaire en texte simple, HTML ou XML utilisant d'autres vocabulaires.
Pour une entrée XML donnée, vous pouvez utiliser le langage XSLT pour créer la sortie souhaitée. Par exemple, vous pouvez convertir des données XML en document HTML en exécutant transformData(InputStream xmlIn, InputStream xslIn, OutputStream transfOut). Le listing E fournit un exemple de transformation XSLT, tandis que le listing F donne une vue HTML d'une entrée du carnet d'adresses.
Simplifiez la gestion des données
Dans cet article, nous avons appris comment convertir des données de format couramment utilisées en documents XML en analysant la classe PlainTextToXmlFormatter. Nous avons également vu comment représenter des documents XML dans différentes vues à l'aide de transformations XSLT. Lorsque vous devez traiter des données dans différents formats, l'adoption de la technologie ci-dessus peut être une bonne solution, vous faisant ainsi gagner un temps précieux et réduisant les risques d'erreurs.
Ce qui précède est une introduction détaillée aux avantages de la conversion des données au format XML. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www.php.cn) !