Эффективный способ синтаксического анализа XML в ElementTree (1.3.0) Python

Я пытаюсь проанализировать огромный XML-файл размером из (20–3 ГБ). Файлы представляют собой образцы из разных инструментов. Итак, я ищу необходимые элементы. nt информации из файла и вставка их в базу данных (Django).

Небольшая часть моего примера файла. Пространство имен существует во всех файлах. Интересной особенностью файлов является то, что они имеют на больше атрибутов узлов, чем текст




    
                    
                    
                            
                                    
                            
                            
                                    
                            
                            
                                    
                            
                            
                                    
                            
                    
     

Маленький, но полный файл находится здесь

Итак, до сих пор я использовал findall для каждого интересующего элемента.

import xml.etree.ElementTree as ET
tree=ET.parse('plgs_example.mzML')
root=tree.getroot()
NS="{http://psi.hupo.org/ms/mzml}"
s=tree.findall('.//{http://psi.hupo.org/ms/mzml}instrumentConfiguration')
for ins in range(len(s)):
    insattrib=s[ins].attrib
    # It will print out all the id attribute of instrument
    print insattrib["id"] 

Как я могу получить доступ ко всем дочерним элементам / внукам элемента instrumentConfiguration (s)?

s=tree.findall('.//{http://psi.hupo.org/ms/mzml}instrumentConfiguration')

Пример того, что я хочу

InstrumentConfiguration
-----------------------
Id:QTOF
Parameter1: T-Tof ultima
source:nanoelectrospray
analyzer: quadrupole
analyzer: time-of-flight
detector: microchannel plate decector

Есть ли эффективный способ синтаксического анализа элемента / подэлемента / подэлемента при наличии пространства имен? Или мне нужно использовать find / findall каждый раз для доступа к определенному элементу в дереве с пространством имен? Это всего лишь небольшой пример, который мне нужно проанализировать более сложную иерархию элементов.

Любые предложения!

Редактировать

Не получил правильный ответ, поэтому придется отредактировать еще раз!

5
задан jfs 2 April 2014 в 02:44
поделиться