Comment garder des commentaires lors de l'analyse syntaxique XML à l'aide de Python / ElementTree

Actuellement à l'aide de Python 2.4.3, et pas le droit de mise à niveau

Je veux modifier les valeurs d'un attribut donné dans un ou plusieurs tags, avec XML-les commentaires dans le fichier mis à jour.

J'ai réussi à créer un script Python qui prend un fichier XML, comme argument, et pour chaque balise spécifiée modifie un attribut, comme indiqué ci-dessous

def update(file, state):
    global Etree
    try:
        from elementtree import ElementTree
        print '*** using ElementTree'
    except ImportError, e:
        print '***'
        print '*** Error: Must install either ElementTree or lxml.'
        print '***'
        raise ImportError, 'must install either ElementTree or lxml'
    #end try

    doc = Etree.parse(file)
    root = doc.getroot()

    for element in root.findall('.//StateManageable'):
        element.attrib['initialState'] = state
    #end for
    doc.write(file)
#end def

C'est toute fine, les attributs "initialState" sont mis à jour, sauf pour le fait que mon fichier XML contient beaucoup de commentaires XML en tant que bien, mais ils ont disparu depuis longtemps, ce qui est mauvais.

Suspect qui analysent uniquement récupère le XML de la structure, mais j'ai pensé XML-commentaires où une partie de la structure. Je me rends compte que le "lisible" formatage de mon document original a disparu depuis longtemps, mais que j'ai réalisé est le comportement attendu, besoin de formater par la suite en utilisant xmllint --format ou XSL.

2.4? Mes sympathies.
vous misez, j'ai eu un moment difficile lors de la création de mon premier scripts réalisant que tous, les bonnes choses, j'ai trouvé des exemples de a été de 2.7 🙂

OriginalL'auteur rhellem | 2010-12-17