ElementTree SyntaxError: erwartetes Pfadtrennzeichen ([)

Ich habe in den letzten Tagen intensiv gesucht und kann anscheinend nicht finden, wonach ich suche. Ich habe ein Skript mit Python 2.7.3 und ElementTree geschrieben, um eine XML-Datei zu analysieren und ein Attribut zu bearbeiten, das sich tief in der XML-Datei befindet. Das Skript funktioniert gut. Ich hatte Ende letzter Woche ein Treffen mit dem Kunden, der mir mitteilte, dass die Zielplattform CentOS sein wird. Ich dachte, kein Problem. Zum Testen auf der erwarteten Plattform habe ich einen CentOS VMWare-Client erstellt. Zu meiner großen Überraschung hat mein Skript das Bett kaputt gemacht und mir die Fehlermeldung "SyntaxError: erwartetes Pfadtrennzeichen ([)"Im Verlauf meiner Recherchen zur Art dieser Fehlermeldung habe ich erfahren, dass CentOS 6.4 Python 2.6.6 unterstützt, das eine ältere Version von ElementTree enthält, die die Suche nach der Syntax von Attributen [@attribute] nicht unterstützt.
Dieser Kunde wird weder Python auf der Plattform aktualisieren noch zusätzliche Bibliotheken installieren, sodass LXML für mich keine Option ist. Meine Frage ist, kann ich irgendwie immer noch auf das vergrabene Attribut zugreifen und es bearbeiten, ohne dass ElementTree die Funktionen [@attribute] unterstützt?

Hier ist ein Beispiel für die Art von XML, mit der ich es zu tun habe:

`

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<my-gui>
    <vehicles>
        <car vendor="Ford"/>
    </vehicles>
    <options>
        <line transmission='manual'/>
    </options>
    <title>Dealership</title>
    <choice id='manual' title="Dealership">
        <pkg-deal id='manual' auth='manager'>.</pkg-deal>
    </choice>
    <choice id='manual' title='Dealership'/>
    <choice id='manual' DealerLocation='Dealer_Loc'/>
    <choices-outline color='color_choice'>
        <line choice='blue'/>
    </choices-outline>
    <choice id='cars' GroupID='convertables'>
        <pkg-deal id='model.Taurus' version="SEL" arguments='LeatherInterior' enabled='XMRadio'>Taurus</pkg-deal>
        <pkg-deal id='model.Mustang' version="GT" enabled='SIRIUSRadio'>Mustang</pkg-deal>
        <pkg-deal id='model.Focus' version="SE" enabled='XMRadio'>Focus</pkg-deal>
        <pkg-deal id='model.Fairlane'>Fairlane</pkg-deal>
        <pkg-deal id='model.Fusion' version="SE" arguments='ClothInerior'>Fusion</pkg-deal>
        <pkg-deal id='model.Fiesta' version="S Hatch" enabled="SIRIUSRadio">Fiesta</pkg-deal>
    </choice>
</my-gui>

`

Hier ist ein Ausschnitt des erfolgreichen Python 2.7.3-Codes, der unter Python 2.6.6 funktioniert:

if self.root.iterfind('pkg-deal'): 
          self.deal = self.root.find('.//pkg-deal[@id="model.fusion"]')
          self.arg = str(self.deal.get('arguments'))
          if self.arg.find('with Scotchguard=') > 0:  
            QtGui.QMessageBox.information(self, 'DealerAssist', 'The selected car is already updated. Nothing to do.')            
            self.leave()        
          self.deal.set('arguments', self.arg + ' with Scotchguard') 
          ...
      ...

Kann ich die erste Zeile dieses 'if'-Anweisungsblocks so ändern, dass ich das Attribut' arguments 'des Fusion-Elements bearbeiten kann? Oder steige ich ab, um libxml2 zu implementieren, was einen echten Schmerz verspricht? ...

Vielen Dank.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage