Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.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—需要解析许多XML文件的所有元素。最快的解析器?_Python_Xml_Pickle - Fatal编程技术网

Python—需要解析许多XML文件的所有元素。最快的解析器?

Python—需要解析许多XML文件的所有元素。最快的解析器?,python,xml,pickle,Python,Xml,Pickle,我有数百个小的(大约千字节)XML文件,我需要在运行时使用这些文件的信息。这些XML文件中的所有数据对我来说都很有用,而不仅仅是一些 在运行时,当我需要其中一个元素的信息时,我可以构造一个ElementTree,解析XML文件,然后递归地对其进行迭代,从而生成一个python对象,我保留该对象并丢弃DOM。但是,如果我要发布XML文件并在运行时对其进行解析,我想知道是否应该考虑使用仅向前的解析器,而不是基于DOM的解析器 考虑到这些数据在构建时是静态的,也许我甚至应该将XML解析为python对

我有数百个小的(大约千字节)XML文件,我需要在运行时使用这些文件的信息。这些XML文件中的所有数据对我来说都很有用,而不仅仅是一些

在运行时,当我需要其中一个元素的信息时,我可以构造一个ElementTree,解析XML文件,然后递归地对其进行迭代,从而生成一个python对象,我保留该对象并丢弃DOM。但是,如果我要发布XML文件并在运行时对其进行解析,我想知道是否应该考虑使用仅向前的解析器,而不是基于DOM的解析器

考虑到这些数据在构建时是静态的,也许我甚至应该将XML解析为python对象,对它们进行pickle、ship’s,然后在运行时取消pickle。我还没有用过酸洗——它会允许使用字典等吗?或者它是用于非常基本的数据结构

希望我说的很清楚——我有很多XML文件中的数据,我将在运行时使用这些数据。想知道访问此数据的最快方法(在运行时)。一旦它被访问一次,我不介意在运行时将它留在内存中

如果有帮助的话,可以共享一个数据示例(无论是XML格式还是我希望python类/对象的样子)


编辑:有几个人提到了lxml。我会去调查的。任何人都可以链接到使用lxml解析xml数据而不是不酸洗?

lxml
是Python最快的xml解析器

我会将它保留为XML格式,除非大小是个问题。如果速度有问题,请将XML文件组合在一起


根据您的数据,将您的信息放入SQLite数据库可能也是一个不错的选择。

对于您的用例来说,lxml是否太慢而无法使用?根据,lxml可以以大约100MB/s的速度解析。当您解析大量小文件时,解析器的速度(以Mb/s为单位)通常无关紧要:这是初始化(每个文档)重要的是成本。关于这方面的任何数据?SQLite有一个附加功能,您可以让SQLite强制执行数据一致性(主键、外键等),这有助于防止某些类别的错误。如果您的数据可以合理地从XML转换为数据库结构,我一定会考虑它。好的想法。将其转换为数据库乍一看似乎有些过分,但这可能不是一个坏主意。