2012-07-25 11 views
8

nasıl (docs çok ayrıntılı değildi Bunun üzerine ben) biraz tahmin:Python Minidom - nitelikler arasında yineleme ve bir dom düğümün bütün niteliklerin yineleme ve adını ve değerini</p> <p>Böyle bir şey denedik almak istiyorum onların adını ve değerini

for attr in element.attributes: 
    attrName = attr.name 
    attrValue = attr.value 
  1. döngü bile başlamıyor
  2. nasıl döngü işe bir kez adını ve özelliğin değerini nasıl alabilirim?

Döngü hatası:

for attr in element.attributes: 
    File "C:\Python32\lib\xml\dom\minidom.py", line 553, in __getitem__ 
    return self._attrs[attname_or_tuple] 
KeyError: 0 

Python yeniyim,

+1

Eğer minidom kullanmak koşullar tarafından zorla Are:

#remember items() is a tUple list : myDict = dict(element.attributes.items()) 

http://docs.python.org/2/library/stdtypes.html#mapping-types-dict ve daha kesin örneğe bakın izler? 'Xml.etree.ElementTree' daha rahattır. – pepr

+0

Teşekkürler, minidomun artık kullanılmadığı bir kaynak bulamadım sanırım ... bunu deneyecek ... –

cevap

13

ne elde etmek çalıştığınız devam edebilirsiniz daha kullanışlı sözlüğe o rahatsız edici niteliği NamedNodeMap aktarmak ise kolayca

#since items() is a tUple list, you can go as follows : 
for attrName, attrValue in element.attributes.items(): 
    #do whatever you'd like 
    print "attribute %s = %s" % (attrName, attrValue) 

bunu yapmak için kısa ve verimli (ve pythonic?) yolu yoktur gibi

d = dict([('two', 2), ('one', 1), ('three', 3)]) 
1

nitelikleri nazik olun lütfen çok bir sözlük gibi davranır, ama aslında bir sözlük olmayan bir NamedNodeMap döndürür. Bunun yerine, attributes'un iteritems() üzerinden döngü yapmayı deneyin. (Kod her durumda beklendiği gibi işe yaramaz böylece düzenli dict üzerinde döngü, yine anahtarları üzerinde döngüler unutmayın.)

2

Ok, this (somewhat minimal) documentation baktıktan sonra, ben başarının tahmin aşağıdaki çözüm

#attr is a touple apparently, and items() is a list 
for attr in element.attributes.items(): 
    attrName = attr[0] 
    attrValue = attr[1]