Il ya plusieurs étapes à cela. D'abord, je déterminerais la structure indépendante des formats des données et créer une classe Scala pour contenir ces données. Ensuite, je devrais comprendre comment ces données sont formatées dans le fichier texte, et écrire une routine pour analyser le fichier texte et peupler la classe (ou éventuellement une liste de cette classe) avec les données. Et enfin, déterminez le schéma du fichier XML et écrivez-y les données en utilisant les littéraux XML de Scala.
Supposons que vos données comprennent le nom, l'âge, la taille et le poids d'une personne. Une classe Scala de tenir que les données pourraient ressembler à:
case class Person(name: String, age: Int, height: Double, weight: Double)
Dans un fichier texte, cela pourrait être représenté de plusieurs façons, de la plus simple:
Peter
34
178.2
83.2
ou un format de style « Propriétés »:
name = Peter
age = 34
weight = 178.2
height = 83.2
ou le format CSV le plus probable, si vous avez plusieurs personnes dans un seul fichier:
Peter,34,178.2,83.2
Tom,53,182.3,95.3
John,27,175.1,74.5
Prenons le dernier format comme exemple. La façon la plus simple de lire le fichier est comme ceci:
val lines = io.Source.fromFile(new java.io.File("test.txt")).getLines.toList
Parse Ensuite, chaque ligne en une personne:
val persons = lines map { line =>
val elements = line split ","
Person(elements(0), elements(1).toInt, elements(2).toDouble, elements(3).toDouble)
}
Ajouter une méthode agréable sur la classe de personne pour le transformer en une XML décent:
def toXml =
<person>
<name>{ name }</name>
<age>{ age }</age>
<height>{ height }</height>
<weight>{ weight }</weight>
</person>
et carte enfin la liste des personnes à XML:
val personsXml = <persons>{ persons map(_.toXml) }</persons>
Et écrire dans un fichier:
new java.io.FileOutputStream(new java.io.File("test.xml")).write(personsXml.toString.getBytes)
Notez que-la gestion des erreurs et la fermeture des fichiers est laissé comme un exercice pour le lecteur! :)
Nous avons besoin de beaucoup plus d'informations. À quoi ressemble votre fichier texte? Quel genre de XML voulez-vous produire? –
@RayToal a raison. Cependant, je vous recommande de regarder d'abord Parser Combinator, qui est un moyen de créer un DSL externe; après avoir avalé le fichier texte par exemple.Pour un usage ultérieur, vous serez potentiellement interessé par Iteratee qui vous donnera plus de contrôle lors de la compilation du texte en xml –
@andypetrella pour le fichier avec quelques chaînes de combinateurs d'analyseurs syntaxiques pourrait être une surpuissance –