我有following test.xml
<root>
<parent>
<ID>1</ID>
<child1>Value1</child1>
<child2>value11</child2>
<child3>
<subchild>value111</subchild>
</child3>
</parent>
<parent>
<ID>2</ID>
<child1>value2</child1>
<child2>value22</child2>
<child2>value333</child2>
</parent>
<parent>
<ID>3</ID>
<child1>value3</child1>
<child2>value33</child2>
</parent>
<parent>
<ID>4</ID>
<child1>value4</child1>
<child2>value44</child2>
</parent>
</root>
我试图完成的工作如下:我想遍历test.xml,对于每个父节点,我想将所有子节点放在一个字典中,其中标记是索引,文本是值,一旦到达父节点的末尾,就将其添加到数据库中,重置字典并移到下一个父节点。
所以对于我的第一个父母
insert = {'ID':1,'child1':'value1','child2':'value11','subchild':'value111'}
在SQL查询中使用它,然后转到下一个父级重置字典并执行相同的操作。 不是每个父母都有相同数量的孩子,有些孩子有子孩子。
我试过:
value = []
tag = []
from elementtree import ElementTree as ET
for parent in tree.getiterator():
for child in parent:
value.append(child.text)
tag.append(child.tag)
但我不知道怎样才能得到我想要的结果。为了使文章尽可能简单,我省略了检索和打开xml。这是我试图使用的方法,但我认为这不是正确的方法,因为我无法在父标记的末尾停止迭代以便插入。
任何帮助都将不胜感激!谢谢
python还附带了一个etree API(它没有很好的打印和lxml所具有的一些其他特性):http://docs.python.org/library/xml.etree.elementtree.html
使用lxml库尝试此操作:
相关问题 更多 >
编程相关推荐