我正在尝试避免XMLReader用于我构建的具有巨大XML文件的应用程序。 SimpleXML很容易编写,我想知道是否有任何方法可以在一个非常繁忙的服务器中成功处理它(内存和性能问题)。 我要做的是主要从搜索表单中回显来自该XML的一些数据。
答案 0 :(得分:1)
好的,如果你真的想在没有XMLReader的情况下这样做,这就是你能做的。
使用fopen打开并读取该文件的N个字节。
修复结局:(这是艰难的部分,但它完全可行) 你可以通过关闭任何未关闭的东西来做到这一点,如果你恰好在某些文本的中间,还需要回溯。
当该XML块最终有效时,您可以使用simplexmL解析它。
处理该块或将其保存在单独的XML文件中 并创造另一个大块...直到你拥有所有这些。
显然,如果您的XML很复杂,可能会有点痛苦。
摘要: 通过创建自己的custom / dirt-cheap xml解析器/修复程序,您可以将一个巨大的XML文件拆分为多个较小的文件。
答案 1 :(得分:1)
如果你的文件主要是很多类似的节点,比如书籍数量很大而且书籍记录本身很小的大书,那么你可以使用XMLReader来解决每个书籍的变化。 node,然后将节点转换为XML字符串并将其传递给SimpleXML。这样,您就可以使用流式传输解决方案来获取大型列表,但是一旦获得每条记录,您就可以轻松地使用SimpleXML访问记录。