草庐IT

php - 减少在 php 中解析大型 xml 文件的处理时间

我在大型xml文件的处理时间方面遇到了这个问题。总的来说,我的意思是平均600MB。目前,解析数据并将其插入数据库大约需要50-60分钟。我想就如何改善处理时间征求意见?就像减少到20分钟。因为根据当前时间,我需要2.5个月的时间才能将xml中的内容填充到数据库中。顺便说一下,我有3000多个xml文件,平均大小为600mb。我的php脚本在命令行中通过cron作业。我也阅读了其他类似下面的问题,但我还没有找到任何想法。WhatisthefastestXMLparserinPHP?我看到有些人已经解析了最大2GB的文件。我想知道处理时间有多长。希望大家多多帮忙。将不胜感激。谢谢。我有这

c# - 使用 XDocument 遍历大型 XML 文件

我必须将现有XML文件中的节点复制到新创建的XML文件中。我正在使用XDocument实例来访问现有的XML文件。问题是XML文件可能非常大(比如说500K行;Openstreetmap数据)。在不导致内存错误的情况下遍历大型XML文件的最佳方法是什么?我目前只使用XDocument.Load(path)并循环遍历doc.Descendants(),但这会导致程序卡住,直到循环完成。所以我认为我必须异步循环,但我不知道实现此目的的最佳方法。 最佳答案 您可以使用XmlReader和IEnumerable迭代器产生你需要的元素。这种方

xml - 使用 XML::Parser 解析大型 XML 文件时如何查看进度?

我正在使用以下代码来解析相当大的xml文件(>50GB):useXML::Parser;my$p=newXML::Parser('Handlers'=>{'Start'=>\&handle_start,'End'=>\&handle_end,'Char'=>\&handle_char,});$p->parsefile('source.xml');...subhandle_start{...}问题是解析需要很长时间,我想要某种进度表。我更喜欢一种不需要先扫描整个文件就可以得到总计数的方法-例如,输入文件中的当前位置将是完美的,因为我可以简单地在开始时检查文件的总大小,然后在handle_

xml - 存储大型、复杂的数据结构

我必须存储大量复杂的数据。我目前正在使用XML文件,因为结构的复杂性不允许我使用(普通)数据库存储数据。我的问题是:是否有任何系统(类似于数据库)能够处理/存储大量复杂数据?如果没有,如果存储XML文件中的数据? 最佳答案 您可能想查看documentorienteddatabases,比如CouchDB. 关于xml-存储大型、复杂的数据结构,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/ques

c# - 找到字符串后拆分大型 XML 文件

我有什么:一个大型XML文件@近100万行内容。内容示例:^重复900k行左右(当然内容会改变)我需要什么:在XML文件中搜索".一旦找到,将该行及其下面的所有行移动(写入)到一个单独的XML文件中。是否建议对搜索部分使用File.ReadAllLines等方法?你们对写作部分有什么建议?据我所知,逐行不是一种选择,因为这会花费太长时间。 最佳答案 为了完全放弃搜索字符串上方的内容,我不会使用File.ReadAllLines,因为它会将整个文件加载到内存中。尝试File.Open并将其包装在StreamReader中。在Strea

php - 能够在 Windows 中打开大型 XML 文件的程序

我需要解析和处理XML提要,不幸的是,提要的大小约为110mb(我对此无能为力)但是为了能够解析它,我需要查看结构(或者如果有人有任何其他我很想听听想法)。但由于某些原因,我无法使用editplus打开该文件。我在一台64位Vista机器上,有4gb的ram(其中很多免费使用)但是文件崩溃了我尝试打开它的每个程序。任何人都知道我如何盲目解析(服务器运行linux...)?!(请使用PHP..!)或可能能够解决我的问题的程序?干杯更新我设法找到了问题,但我接受的答案解决了这个问题。似乎XML文件不仅很大,而且都在一行上,这似乎打破了大多数程序中的行限制。选择的答案textpad++检测到

c# - 在大型 XML 文档中查找特定属性

我有一个大约100mb的大型XML文档。我需要在此文档中找到两个标签的属性。我可以使用与以下类似的代码来做到这一点:XmlDocumentxmlDocument=newXmlDocument();xmlDocument.Load("C:\\myxml.xml");XmlNodenode1=xmlDocument.SelectSingleNode("/data/objects[@type='datatype1']");if(null!=node1){result=node1["Version"].Value;}但是这样做会将整个XML加载到内存中,这似乎需要大约200mb。无论如何我可以

c# - 在 C# 中使用 XMLWriter 创建大型 xml

我试图使用XMLWriter创建一个包含大量数据的xml,该函数执行时没有任何异常。但是当我打开XML时,我发现创建的XML不完整,它在中途被破坏了.我不知道我做错了什么。XMLWriter是否有任何默认大小限制?XMLWriter是创建大型XML的最佳方式吗?如果不是请让我知道创建大型xml的最佳方法是什么?使用XDocument让我的生活更轻松吗?这是我的代码结构(我不能把我的原始代码放在这里!!:()using(//filestream){XmlWritermywriter=newXmlWriter.Create(@"C:\mydata.xml");//writestartele

php - 在 PHP 中解析大型 XML

我需要在PHP中解析相当大的XML(例如300MB)。我怎样才能最有效地做到这一点?特别是,我需要定位特定标签并将其内容提取到一个平面TXT文件中,仅此而已。 最佳答案 您可以使用老式SAX-basedparsing以block的形式读取和解析XML使用PHP的方法xmlparserfunctions.使用这种方法,您可以解析的文档大小没有真正的限制,因为您一次只需读取和解析一个满缓冲区。解析器将触发事件以指示它已找到标签、数据等。有一个simpleexampl手册中的e显示了如何获取标签的开始和结束。为了您的目的,您可能还想使用x

ruby - 如何使用 libxml-ruby 在 Ruby 中读取大型 XML 文件?

我们已经使用libxml-ruby几年了。它在30MB或更少的文件上非常棒,但它受到段错误的困扰。项目中似乎没有人真正关心修复它们,只是将这些归咎于第3方软件。这是他们的特权,当然是免费的。但我仍然无法读取这些大文件。我想我可以写一些糟糕的hack来将它们拆分成更小的文件,但我想避免这种情况。还有其他人有在Ruby中读取非常大的XML文件的经验吗? 最佳答案 当加载大文件时,无论它们是不是xml,您应该开始考虑一次分片(在这种情况下称为流),而不是将整个文件加载到内存中。我强烈建议阅读thisarticleaboutpullpars