Analyse/Comparaison de fichiers

Filibert28 Messages postés 3 Statut Membre -  
jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   -
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

2 réponses

  1. marc[i1] Messages postés 2603 Statut Contributeur 382
     
    Salut,

    utilise la commande diff … c'est simple, rapide et ça existe déjà :)
    0
    1. Filibert28 Messages postés 3 Statut Membre
       
      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...
      0
      1. Filou > Filibert28 Messages postés 3 Statut Membre
         
        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+

        https://winmerge.org/
        0
      2. Filou > Filou
         
        Sorry j'avais pas lu la fin "en bash sous unix"
        ma reponse n'a aucun interet
        0
  2. jeanbi Messages postés 15399 Date d'inscription   Statut Contributeur Dernière intervention   2 383
     
    bonjour,
    http://www.ac-astuces.com/affiche.php?astuce=1141
    le petit + en bas
    diff avec emacs
    a+

    0