Rechercher : dans
Par :

Analyse/Comparaison de fichiers

Dernière réponse le 24 mar 2008 à 10:59:40 Filibert28, le 19 mar 2008 à 23:27:57 
 Signaler ce message aux modérateurs

Bonjour,
je cherche à réaliser un utilitaire permettant de comparer deux fichiers xml.
Pour cela, j'aimerais réaliser quelque chose du type.
Par exemple avec les 2 fichiers suivants :

Fichier1:
<JDepend name="project" version="1.0">
<Packages>

<Package name="java.io">
<error>No stats available: package referenced, but not
analyzed.</error>
</Package>

<Package name="java.lang">
<error>No stats available: package referenced, but not
analyzed.</error>
</Package>
...
</Packages>
</JDepend>

L'utilitaire commencera par récupérer l'élément racine :
<JDepend name="project" version="1.0">

Dans le second fichier, il cherchera à récupérer l'élément équivalent,
puis il comparera si les attributs de l'élément ont changé.

Fichier2:

<JDepend name="project2" version_control="1.2">

$ ./tp4.sh file1.xml file2.xml
'JDepend' (line 2):
attribut 'version' removed
attribut 'version_control' added with value '1.2'
attribut 'name' value modified to 'project2'

Je désire programmer ceci uniquement en bash sous Unix et je ne sais vraiment pas comment faire .
Une idée ?!

Configuration: Windows XP
Internet Explorer 7.0

1

marc[i1], le 19 mar 2008 à 23:31:25

Salut,

utilise la commande diff … c'est simple, rapide et ça existe déjà :)

Archlinux ... Une distribution légère, rapide et KISS sur archlinux.fr

Répondre à marc[i1]

2

Filibert28, le 19 mar 2008 à 23:49:21

Et sans la commande diff ? Car si les fichiers traités a titre d'exemple peuvent etre traités avec la commande diff, certains fichiers a rallonge qui sont au format xml, paraissent virtuellement identiques :
ex:

Fichier 1:
<root name="application">
<configuration name="prod" context="run">
<backup oneline="true">
</configuration>
</root>

Fichier 2:
<root
name="application">
<configuration name="prod"
context="run">
<backup
oneline="false">
</configuration>
</root>

en utilisant diff, on obtient :

1,3c1,6
< <root name="application">
< <configuration name="prod" context="run">
< <backup oneline="true">
---
> <root
> name="application">
> <configuration name="prod"
> context="run">
> <backup
> oneline="false">

Ce qui ne convient évidemment pas...

Répondre à Filibert28

3

Filou, le 24 mar 2008 à 10:51:29

Bonjour,

As tu essayé avec Winmerge ?
Perso, je n'ai pas testé avec du xml, mais je pense que ca en vaut le coup.
C'est en plus un opensource

a+

http://winmerge.org/

Répondre à Filou

4

Filou, le 24 mar 2008 à 10:53:39

Sorry j'avais pas lu la fin "en bash sous unix"
ma reponse n'a aucun interet

Répondre à Filou

5

 jeanbi, le 24 mar 2008 à 10:59:40

Bonjour,
http://www.ac-astuces.com/affiche.php?astuce=1141
le petit + en bas
diff avec emacs
a+


FC 7 - Mandriva 2008 -Debian 4.0-
Les meilleures choses ont besoin de patience.(JC ANGLADE)

Répondre à jeanbi
Collection CommentÇaMarche.net