Generer diff mellem XML-filer på Linux: xmldiff, XMLStarlet, diffxml og Python-scripts

Hvordan kan der på Linux genereres en diff mellem to XML-filer, med mulighed for at konfigurere strenghedsniveauer som f.eks. mellemrum og attributrækkefølge?

For at generere en diff mellem to XML-filer på Linux med mulighed for at konfigurere strenghedsniveauer som mellemrum og attributrækkefølge, kan du bruge værktøjer som xmldiff, XMLStarlet, diffxml eller skrive et Python-script med lxml biblioteket.

Hvordan kan der på Linux genereres en diff mellem to XML-filer, med mulighed for at konfigurere strenghedsniveauer som f.eks. mellemrum og attributrækkefølge?

For at generere en diff mellem to XML-filer på Linux med mulighed for at konfigurere strenghedsniveauer som f.eks. mellemrum og attributrækkefølge, kan du bruge forskellige værktøjer og teknikker. Her er nogle af de mest effektive metoder:

1. xmldiff

xmldiff er et værktøj specifikt designet til at sammenligne XML-filer. Det kan håndtere forskelle i mellemrum og attributrækkefølge.

  • Installer xmldiff:
    sudo apt-get install python3-lxml
    sudo pip3 install xmldiff
  • Brug xmldiff til at sammenligne to XML-filer:
    xmldiff fil1.xml fil2.xml

2. XMLStarlet

XMLStarlet er en kommandolinje-værktøjssamling til XML-redigering, forespørgsler og transformationer. Det kan også bruges til at normalisere XML-filer før sammenligning.

  • Installer XMLStarlet:
    sudo apt-get install xmlstarlet
  • Normaliser XML-filerne:
    xmlstarlet fo --omit-decl --sort-attr fil1.xml > fil1_normalized.xml
    xmlstarlet fo --omit-decl --sort-attr fil2.xml > fil2_normalized.xml
  • Brug diff til at sammenligne de normaliserede filer:
    diff fil1_normalized.xml fil2_normalized.xml

3. diffxml

diffxml er et andet værktøj specifikt designet til at sammenligne XML-filer.

  • Installer diffxml:
    sudo apt-get install diffxml
  • Brug diffxml til at sammenligne to XML-filer:
    diffxml fil1.xml fil2.xml

4. Brug af Python-scripts

Hvis du har brug for mere fleksibilitet, kan du skrive et Python-script ved hjælp af lxml biblioteket til at sammenligne XML-filer med specifikke strenghedsniveauer.

  • Installer lxml:
    sudo apt-get install python3-lxml
  • Eksempel på Python-script:
    from lxml import etree
    import difflib
    
    def normalize_xml(file_path):
        parser = etree.XMLParser(remove_blank_text=True)
        tree = etree.parse(file_path, parser)
        return etree.tostring(tree, pretty_print=True, encoding='unicode')
    
    xml1 = normalize_xml('fil1.xml')
    xml2 = normalize_xml('fil2.xml')
    
    diff = difflib.unified_diff(xml1.splitlines(), xml2.splitlines(), lineterm='')
    for line in diff:
        print(line)

Ved at bruge disse værktøjer og teknikker kan du effektivt generere en diff mellem to XML-filer på Linux og konfigurere strenghedsniveauer som mellemrum og attributrækkefølge.