2010-09-21 4 views
5

Я использую модуль xml.etree.ElementTree для создания XML-документа с Python 3.1 из другого структурированного документа.Элемент элемента ElementTree искать

Какую функцию ElementTree я могу использовать, которая возвращает индекс существующего подэлемента?

ответ

7

Метод getchildren возвращает список подэлементов объекта Element. Затем вы можете использовать встроенный индексный метод списка.

>>> import xml.etree.ElementTree as ET 
>>> root = ET.Element("html") 
>>> head = ET.SubElement(root, "head") 
>>> body = ET.SubElement(root, "body") 
>>> root.getchildren().index(body) 
1 
+0

Спасибо, именно то, что я искал. – John

+3

Просто верхний - список (корень) .index (body) теперь является правильным способом сделать это. getchildren() устарел – aaaaaa

0
import xml.etree.ElementTree as ET 
root=ET.Element('C:\Users\Administrator\Desktop\ValidationToolKit_15.9\ValidationToolKit_15.9\NE3S_VTK\webservice\history\ofas.2017-1-3.10-55-21-608.xml') 
childnew=ET.SubElement(root,"354") 
root.getchildren().index(childnew) 
0 
list(root).index(childnew) 
0 
+0

, вы можете добавить несколько пояснений к этому, то есть «сначала создайте список с помощью' getchildren() ', а затем получите его индекс с помощью' index() '" –

0
def Alarms_Validation(self,path,AlarmNo,AlarmText,Severity,Text,Event): 
    with open(path) as f: 
     tree = et.parse(f) 
     RUN=True 
     root = tree.getroot() 
     try: 

       for x in xrange(10000): 
         print x 
         for y in xrange(6): 
           print y 
           if root[x][y].text==AlarmNo: 
             print "found" 
             print x 
             print y 
             if root[x][y+1].text!=AlarmText: 
              print "Alarm text is not proper" 
             else: 
              print "Alarm Text is proper" 
     except IndexError: 
       pass 
+0

Это работает в соответствии с мое требование. Я получаю индекс и получаю индекс, который я верю. Над всем, что было опубликовано, не работало для меня. – user2160906

+0

Как это ответ на вопрос? Это кажется совершенно несвязанным. – mzjn

+0

@mzjn Здесь Print x и Print y являются указателем дерева элементов. Другой подход к поиску индекса. – user2160906