【发布时间】:2015-05-08 21:15:03
【问题描述】:
我有这个 xml 文件布局,我想提取所有孩子的名字(Amy、Max 和 Derek):
<data>
<dataentry>
<Name>John</Name>
<Birthday>3/3/93</BirthDay>
<Children>
<Child> Amy </Child>
<Child> Max </Child>
<Child> Derek </Child>
</Children>
</dataentry>
<dataentry>
....
</dataentry>
</data>
Python 代码:
root = tree.getroot()
for dataentry in root.findall('dataentry'):
for children in dataentry.findall('Children'):
for child in children.findall('Child'):
print child.text
我有这个嵌套的 for 循环,但有更快或更优雅的方法吗?
【问题讨论】:
-
正则表达式可能更快
-
@Lashane 它可能会更快,但我不确定这是否是正确的做法 (reference)。
-
@alecxe 正则表达式肯定不是解析 xml 或 html 的正确方法,但对于一些简单且定义明确的文件,它们工作得很好
-
@Lashane,正则表达式也可能(也将)错误。添加 CDATA 部分或 cmets,天真的正则表达式不会知道其中的内容不应该匹配。
-
另外,如果您要为大量数据执行此操作,或者重复执行此类操作,您可能需要考虑使用 XQuery 数据库,该数据库将为您的 XML 内容编制索引(非常)这种类型的快速搜索。
标签: python xml performance parsing xml-parsing