ElementTree SyntaxError: oczekiwany separator ścieżki ([)

Szukałem obszernie przez ostatnie kilka dni i nie mogę znaleźć tego, czego szukam. Napisałem skrypt używający Pythona 2.7.3 i ElementTree do analizowania pliku XML i edytowania atrybutu zakopanego głęboko w pliku XML. Skrypt działa dobrze. W zeszłym tygodniu miałem spotkanie z klientem, który poinformował mnie, że docelową platformą będzie CentOS. Nie ma problemu. Aby przetestować na przewidywanej platformie, stworzyłem klienta CentOS VMWare i ku mojemu zdziwieniu mój skrypt zgniótł łóżko, dając mi komunikat o błędzie „SyntaxError: oczekiwany separator ścieżki ([)„W trakcie badania natury tego komunikatu o błędzie dowiedziałem się, że CentOS 6.4 obsługuje Python 2.6.6, który zawiera starszą wersję ElementTree, która nie obsługuje wyszukiwania składni atrybutów [@attribute].
Ten klient nie zaktualizuje Pythona na platformie ani nie zainstaluje dodatkowych bibliotek, więc lxml nie jest dla mnie opcją. Moje pytanie brzmi, czy nadal mogę uzyskać dostęp do zakopanego atrybutu i edytować go bez obsługi ElementTree dla obiektów [@atrybut]?

Oto przykład rodzaju XML, z którym mam do czynienia:

`

<?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>

`

Oto fragment udanego kodu Pythona 2.7.3, który łamie się pod Pythonem 2.6.6:

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') 
          ...
      ...

Czy jest sposób, w jaki mogę zmodyfikować pierwszą linię tego bloku instrukcji „if”, która pozwoli mi edytować atrybut „argumenty” elementu Fusion? A może jestem przeniesiony do implementacji libxml2, co zapowiada się na prawdziwy ból? ...

Dzięki.

questionAnswers(2)

yourAnswerToTheQuestion