我有以下XML例子Python的XML到词典遍历项目
<?xml version="1.0"?>
<test>
<items>
<item>item 1</item>
<item>item 2</item>
</items>
</test>
我需要遍历每个标签的在Python中循环。如果尝试了很多事情,但我不能得到它..
感谢您的帮助
我有以下XML例子Python的XML到词典遍历项目
<?xml version="1.0"?>
<test>
<items>
<item>item 1</item>
<item>item 2</item>
</items>
</test>
我需要遍历每个标签的在Python中循环。如果尝试了很多事情,但我不能得到它..
感谢您的帮助
我个人使用xml.etree.cElementTree
,因为我发现它的作品真的很好,它的快速,easy to use,并works well with big (>2GB) files。
import xml.etree.cElementTree as etree
with open(xml_file_path) as xml_file:
tree = etree.iterparse(xml_file)
for items in tree:
for item in items:
print item.text
在交互式控制台
>>> x="""<?xml version="1.0"?>
<test>
<items>
<item>item 1</item>
<item>item 2</item>
</items>
</test>"""
>>> x
'<?xml version="1.0"?>\n<test>\n <items>\n <item>item 1</item>\n <item>item 2</item>\n </items>\n</test>'
>>> import xml.etree.cElementTree as etree
>>> tree = etree.fromstring(x)
>>> tree
<Element 'test' at 0xb63ad248>
>>> for i in tree:
for j in i:
print j
<Element 'item' at 0xb63ad2f0>
<Element 'item' at 0xb63ad338>
>>> for i in tree:
for j in i:
j.text
'item 1'
'item 2'
>>>
尝试XML解析器从xml.sax
包装标准库。
from xml.sax import parse from xml.sax.handler import ContentHandler from sys import argv class Handler(ContentHandler): def startElementNS(self, name, qname, attrs): self.startElement(name, attrs) def endElementNs(self, name, qname): self.endElement(name, attrs) def startElement(self, name, qname, attrs): ... do whatever you like on tag start... def characters(self, content): ... on tag content ... def endElement(self, name): ... on tag closing ... if __name__ == "__main__": parse(argv[1], Handler())
这里我假设argv [1]是你想要解析的文件的路径。 (parse()函数的第一个参数是文件名或流)。将它转换为for循环很容易:只需在上面的方法中获取所需的所有信息,并将它们推送到某个列表或堆栈中。一旦完成解析,迭代它。
import xml.dom.minidom as md
x='''<?xml version="1.0"?>
<test>
<items>
<item>item 1</item>
<item>item 2</item>
</items>
</test>
'''
xml=md.parseString(x)
items=xml.getElementsByTagName("item")
# [<DOM Element: item at 0xc16e40>, <DOM Element: item at 0xc16ee0>]
因为items
是DOM元素数组,你可以用循环for
你可能想使用类似ElementTree这是一个很好著名的图书馆,我没有亲自使用过,但我总是听到好东西。
也作为蟒蛇2.5它是标准库的一部分
请显示您尝试过的一些事情。 – Tomalak 2010-03-03 14:54:05
我已经尝试http://github.com/joestump/python-simplexml/blob/master/simplexml.py,但如果只有1个项目,它不会迭代只是无限循环结束 – Mike 2010-03-03 14:57:45