尝试使用Python 2.7提取XML元素
我正在尝试从xml文件中提取序列下的名称元素。我在上面粘贴了一个示例xml,以便说明我的意思。通过这个,我想获取“01 Interview_been successful through mentorship”这段文字,并把它写入一个文件。这个xml中有多个序列标签,我正在努力弄清楚如何遍历它们并提取信息。我试着了解如何使用xml.etree和xml.dom.minidom,但总是搞不明白。我能获取到序列标签中的所有id值,但就是提取不到名称元素。在xml之前,我把我的代码粘贴在这里。
from xml.etree import ElementTree
file = open("xmldump.txt", "r")
filedata = file.read()
file.close()
with open('test.xml', 'rt') as f:
tree = ElementTree.parse(f)
for node in tree.iter('name'):
sequenceid = node.attrib.get('name')
print ' %s' % (sequenceid)
newLine = sequenceid + "\n"
file = open("xmldump.txt", "w")
file.write(newLine)
file.close()
这是XML内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xmeml>
<xmeml version="5">
<bin>
<uuid>0F5D72FA-54E4-4DE8-81D7-CC33F5C43836</uuid>
<updatebehavior>add</updatebehavior>
<name>Logged</name>
<children>
<sequence id="01 Interview_been successful through mentorship">
<uuid>12FB944D-83EA-4527-9A54-2130A42E3A06</uuid>
<updatebehavior>add</updatebehavior>
<name>01 Interview_been successful through mentorship</name>
<duration>1195</duration>
<rate>
<ntsc>TRUE</ntsc>
<timebase>24</timebase>
</rate>
<timecode>
1 个回答
5
嗯,我不太确定你是想要“id”属性还是“name”标签(你的代码有点让人困惑,它试图从“sequence”标签中提取“name”属性,但那个标签只有一个“id”属性)。下面的代码可以提取这两者,应该能帮助你开始理解ElementTree是怎么工作的。
from xml.etree import ElementTree
with open('test.xml', 'rt') as f:
tree = ElementTree.parse(f)
for node in tree.iter('sequence'):
sequenceid = node.attrib.get('id')
name = node.findtext('name')