我是LXML的新手,并且通常解析XML文档。我写了一小段代码似乎也做了我需要做的事情,但感觉我过于复杂了。有什么方法可以简化这个吗?
方法:
def importFromXML(self, filename):
tree = etree.parse(filename)
for child in tree.getroot():
if child.tag != 'SLOT':
print('Tag:', child.tag, ', Text', child.text)
elif child.tag == 'SLOT':
for slot, index in child.items():
for attribute in child:
print('Slot Number =', index, ', Tag:', attribute.tag, ', Value:', attribute.text)
XML:
<?xml version="1.0" encoding="UTF-8"?>
<Item>
<ActiveState>drop</ActiveState>
<Location>Left Wrist</Location>
<Realm>All</Realm>
<ItemName>Band of the Dream Conqueror</ItemName>
<ItemQuality>100</ItemQuality>
<Equipped>1</Equipped>
<Level>50</Level>
<TYPE>Wrist</TYPE>
<SOURCE>Drop</SOURCE>
<DBSOURCE>kscraft</DBSOURCE>
<SLOT Number="0">
<Type>Resist</Type>
<Effect>Crush</Effect>
<Amount>6</Amount>
</SLOT>
<SLOT Number="1">
<Type>Resist</Type>
<Effect>Thrust</Effect>
<Amount>6</Amount>
</SLOT>
<SLOT Number="2">
<Type>Resist</Type>
<Effect>Slash</Effect>
<Amount>6</Amount>
</SLOT>
</Item>
我只是想确保我做对了。我正在使用Python 3.x
答案 0 :(得分:1)
我认为没有什么可以批评你的解析。特别是,它非常易读且易于理解。但是,我建议对if
声明稍作调整。
not
,而not
会增加一个额外的障碍来理解代码中的自然语言。elif
的{{1}}。else