Forum Programmation.perl comparer 2 fichier XML en Perl

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
-2
24
mar.
2015

Je suis nouveau sur ce Forum et aussi nouveau en Programmation avec le Language Perl,au fait j'aimerai comparer deux fichier XML, de maniere a ce que mon Code m'indique d'une maniere Booleanne quand il ya une difference et aussi me dise a quel niveau(Line) la difference se situe. en voila deux fichier ci dessou.

Doc.XML1

<?xml version="1.0" encoding="UTF-8"?>
      <Profile origin="get" version="2.1" date="2013.05.20">
             <Catalog id="Param" version="2.1">
              <Parameter name="primary" value="2"/>
              <Parameter name="secondary" value="3"/>
              <Parameter name="copy" value="4"/>
              <Parameter name="forced" value="1"/>
              <Parameter name="always" value="0"/>
              <Parameter name="type" value="5" Type="False"/>
              <Parameter name="memory" value="allow"/>
             </Catalog>
            </profile>

Doc.XML2
<?xml version="1.0" encoding="UTF-8"?>
      <Profile origin="get" version="2.1" date="2013.05.20">
             <Catalog id="Param" version="2.1">
              <Parameter name="primary" value="2"/>
              <Parameter name="secondary" value="3"/>
              <Parameter name="copy" value="4"/>
              <Parameter name="forced" value="1"/>
              <Parameter name="always" value="1"/>
              <Parameter name="type" value="5" Type="False"/>
              <Parameter name="memory" value="allow"/>
             </Catalog>
            </profile>
  • # Mais encore ?

    Posté par  . Évalué à 2.

    Est-ce que ta notion de similarité tient compte de la structure XML (est-ce que deux tags qui possèdent les mêmes attributs mais dans un ordre différent sont identiques) ou bien c'est juste en comparaison ligne à ligne ?

    As tu essayé développer quelque-chose ?

  • # pour comparer le xml

    Posté par  . Évalué à 4.

    j'utilise

    diffXml ()
    {
        [ $# -ne 2 ] && return;
        FILE1=$1;
        FILE2=$2;
        TMP1=$(mktemp);
        TMP2=$(mktemp);
        sed -e 's/></>\n</g' $FILE1 | xmllint --c14n - > $TMP1;
        sed -e 's/></>\n</g' $FILE2 | xmllint --c14n - > $TMP2;
        diff --ignore-all-space --ignore-blank-lines $TMP1 $TMP2;
        \rm $TMP1 $TMP2
    }

    évidemment ça ne fait pas le café, mais ça y contribue (c'est une fonction bash )

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

    • [^] # Re: pour comparer le xml

      Posté par  . Évalué à 1.

      j'ai essaye ton code malheureusement il ne fonctione pas ou alors je fait une erreur je ne sais pas.

  • # Un outil existant…?

    Posté par  (site web personnel) . Évalué à 3.

    Si ce n'est pas un exercice de programmation… les moteurs de recherche donnent diffxml, ainsi que des discussions qui listent des outils pour ce genre de tache.

    Python 3 - Apprendre à programmer dans l'écosystème Python → https://www.dunod.com/EAN/9782100809141

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.