0

我必须处理从大型数据库创建的巨大 XML 文件。

从数据库结构中我生成了一个 XML 树,但它最终吃掉了我所有的内存(现在超过 10GB),所以这个过程永远不会结束,因为系统无法处理任何新的查询。

我认为解决方案是避免将所有 XML 结构保存到内存中,并在我添加新内容时将其直接转储到磁盘中。

这真的是我能做到的吗?如何?

谢谢!

4

1 回答 1

1

我不确定您的代码究竟是如何工作的,但这绝对是可以做到的。根据其结构,您可以创建时间戳并将传入数据与旧数据进行比较,或者您可以扫描文件以查看当前 XML 是否已添加。之后(假设它的新代码),您可以执行以下操作:

path = "path/"
name = "fileName"

xmlRoot = Element("root")#create a root element for the xml structure
xmlSub = SubElement(xmlRoot,"sub")
subName = SubElement(xmlCard,"name")
subName.text = "element text"

saveName = path + name + ".xml" #constructs location of xml file (path/fileName.xml)
tree = ElementTree(xmlRoot) #compiles the tree
tree.append(saveName) #appends to specified file

这将在名为“fileName.xml”的文件夹“path”中的文档中输出以下内容

<root>
    <sub>
        <name>element text</name>
    </sub>
</root>

如果要扫描 XML 文档中的对象,请执行以下操作:

xml = parse("path/fileName.xml")
nameList = xml.findall("sub/name") #find all objects in <name> brackets
for i in nameList:
    i.text #convert item in the list to a readable string
    #do comparison here

我希望这有帮助!快乐编码!

于 2013-09-03T15:46:18.037 回答