2008-12-19 5 views
1

J'ai encore besoin de votre expertise. J'ai une classe java qui cherche dans un répertoire les fichiers xml (affiche les fichiers trouvés dans la fenêtre de la console eclipse), applique le xslt spécifié à ceux-ci et envoie la sortie dans un répertoire.Création de xml à partir de Java

Ce que je veux faire maintenant est de créer un fichier XML contenant les noms de fichiers et types de format de fichier. Le format devrait être quelque chose comme;

<file> 
     <fileName>   </fileName> 
     <fileType>  </fileType> 
</file> 

<file> 
    <fileName>   </fileName> 
    <fileType>  </fileType> 
</file> 

Où pour chaque fichier qu'il trouve dans le répertoire, il crée une nouvelle <file>.

Toute aide est vraiment appréciée.

Répondre

3

Jetez un oeil à DOM et ECS. L'exemple suivant a été adaptée aux besoins vous de here:

XMLDocument document = new XMLDocument(); 
for (File f : files) { 
    document.addElement(new XML("file") 
     .addXMLAttribute("fileName", file.getName()) 
     .addXMLAttribute("fileType", file.getType()) 
    ) 
    ); 
} 
0

Eh bien il suffit d'utiliser un StringBuilder:

StringBuilder builder = new StringBuilder(); 
for(File f : files) { 
    builder.append("<file>\n\t<fileName>").append(f.getName).append("</fileName>\n)"; 
    [...] 
} 
System.out.println(builder.toString()); 
+0

Mauvaise idée. Si vous avez des noms de fichiers avec des caractères qui doivent s'échapper en XML, vous aurez des problèmes. Il y a une raison pour laquelle il y a des bibliothèques XML ... –

+0

C'est vrai ... Je suis habitué à le faire pour l'exportation de données "simple" mais je sais toujours quels sont les problèmes d'échappement ... – Vinze

+0

Étant donné une API décente, en utilisant un La bibliothèque produit un code qui est tout aussi simple - sinon plus simple - et un * lot * plus robuste, IMO. –

10

Utilisez une bibliothèque XML. Il y en a plein autour, et ceux de tiers sont presque tous plus faciles à utiliser que l'API DOM intégrée dans Java. La dernière fois que je l'ai utilisé, JDom était plutôt bien. (Je ne l'ai pas eu à faire beaucoup XML récemment.)

Quelque chose comme:

Element rootElement = new Element("root"); // You didn't show what this should be 
Document document = new Document(rootElement); 

for (Whatever file : files) 
{ 
    Element fileElement = new Element("file"); 
    fileElement.addContent(new Element("fileName").addContent(file.getName()); 
    fileElement.addContent(new Element("fileType").addContent(file.getType()); 
} 

String xml = XMLOutputter.outputString(document); 
1

Vous pouvez utiliser l'approche StringBuilder proposée par Vinze, mais une mise en garde est que vous devez vous assurer que vos noms de fichiers ne contiennent pas de caractères spéciaux XML, et leur échapper s'ils le font (par exemple, remplacer < par & lt; et traiter correctement les citations).

Dans ce cas, il ne se pose pas probablement et vous en sortir sans elle, mais si jamais vous le port de ce code de réutiliser dans un autre cas, vous pouvez être piqués par cela. Donc, vous pourriez vouloir regarder une classe XMLWriter qui fera tout le travail d'échappement pour vous.

Questions connexes