0

xml 文件示例:

<header>
<name>name</name>

<items>

<item>
<title>title</title>
<add>add</add>
</item>

<item>
<title>title</title>
<add>add</add>
</item>

</items>
</header>

我想将信息解析为按每个标题和子组项目分解的组:

xml也解析:

name
----title
----add

----title
----add

next header

name
----tile
----add
----etc
----etc

如果有人可以发布一个示例,最好使用 elem tree iterparse 它是一个大的 xml 文件...

我的例子不起作用是......

import xml.etree.cElementTree as etree
infile = open("c:/1.xml", 'r')
context = etree.iterparse(infile, events=("start", "end"))

for event, element in context:
    if event == "end":
        if element.tag == "header":
            print element.findtext('name')
        elif element.tag == "item":
            print element.findtext('title')
            print element.findtext('add')
4

1 回答 1

3

因此,使用您提供的 infile 非常简单:

import xml.etree.cElementTree as etree

for event, element in etree.iterparse("C:/1.xml"):
    if element.tag == "name":
        print element.text
    elif element.tag in ["title", "add"]:
        print "---" + element.text

这给出了输出:

name
----title
----add
----title
----add

我想如果你想在标题之间有一个垫片,你会:

if element.tag == "header":
    print "\n"
于 2014-01-10T15:56:20.737 回答