【发布时间】:2013-02-26 23:53:19
【问题描述】:
我正在尝试提取 xml 文件中序列下的名称元素。我在顶部粘贴了一个示例 xml 来说明。有了这个,我想通过指导从 01 Interview_been 中获得文本并将其写入文件。 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>
【问题讨论】:
-
这不是一个有效的 XML 文档。
timecode、sequence等节点是打开的,从不关闭。如果您实际上是在尝试解析片段,则不能为此使用 DOM 解析器(如minidom或ElementTree.parse);您需要一个迭代解析器(如ElementTree.iterparse)或一个 SAX 解析器。如果您要解析真实文档,请提供真实文档。 -
另外,您正在尝试获取每个
name节点的name属性。您的代码会这样做,但在您的示例 XML 中,name节点都没有name属性,或者根本没有任何属性。您是否尝试获取name节点的内部文本?或者是什么?你为什么要打电话给sequenceid? -
他确实说过“我已经粘贴在示例 xml 的顶部来说明”。我认为这只是部分,他的文件可能是有效的 xml
-
@entropy:提供sscce 是 OP 的责任,而不是猜测他的意思。也许那个后跟 5 个结束标签的样本说明了他的问题,但是我们怎么知道,而不是猜测然后希望呢?
-
@abarnert 我完全同意这是他的责任。我只是指出一个事实,他说这是“样本的顶部”,这可能意味着它是一个部分文件,他选择了一个不幸的地方来剪切它。
标签: python xml-parsing