Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用python 2.7提取xml元素_Python_Xml Parsing - Fatal编程技术网

尝试使用python 2.7提取xml元素

尝试使用python 2.7提取xml元素,python,xml-parsing,Python,Xml Parsing,我试图在xml文件中提取序列下的name元素。我已经在示例xml的顶部粘贴了一个示例,以进行说明。有了这篇文章,我想让01访谈的文本通过指导获得成功,并将其写入一个文件。xml中有多个序列标记,我正试图找出如何遍历并提取它。我曾试图弄清楚如何使用xml.etree和xml.dom.minidom,但我似乎无法集中精力。我能够从序列标签中获得所有id值,但不能从名称元素中获得。我在xml之前粘贴代码 from xml.etree import ElementTree file = open("

我试图在xml文件中提取序列下的name元素。我已经在示例xml的顶部粘贴了一个示例,以进行说明。有了这篇文章,我想让01访谈的文本通过指导获得成功,并将其写入一个文件。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>

0F5D72FA-54E4-4DE8-81D7-CC33F5C43836
添加
记录
12FB944D-83EA-4527-9A54-2130A42E3A06
添加
01通过辅导,面试成功
1195
真的
24

嗯,我不确定您想要的是“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')

这不是有效的XML文档<代码>时间代码,
顺序
等。节点打开且从不关闭。如果您实际上试图解析一个片段,那么就不能使用DOM解析器(如
minidom
ElementTree.parse
)来解析;您需要一个迭代解析器(如
ElementTree.iterparse
)或SAX解析器。如果您试图解析一个真实的文档,请给我们一个真实的文档。另外,您试图获取每个
名称
节点的
名称
属性。代码就是这样做的,但是在示例XML中,
name
节点都没有
name
属性,也没有任何属性。您是否正在尝试获取
名称
节点的内部文本?或者…什么?如果你得到一个
sequenceid
,你为什么要调用它呢?他确实说过“我已经在一个示例xml的顶部粘贴了说明”。我认为那只是一部分,他的档案可能是有效的xml@entropy当前位置OP的责任是提供一份报告,猜测他的意思不是我们的工作。也许这个样本后面有5个结束标签说明了他的问题,但我们如何知道这一点而不去猜测和希望呢?@abarnert我完全同意这是他的责任。我只是指出一个事实,他说这是“样本顶部”,这可能意味着这是一个部分文件,他选择了一个不幸的地方进行剪切。非常感谢。你解决了我的问题,帮我完成了我的计划。我引用的xml是从Final Cut Pro导出的,所以除了显示我想要抓取的标签外,我不敢发布任何东西。再次感谢您的好意和理解。我很高兴:-)您应该将答案标记为已接受。只需按下它旁边的复选标记。