草庐IT

c# - 如何有效地使用内存附加到 C# 中的大型 XML 文件

有什么方法可以合并两个XmlDocument而无需在内存中保留第一个?我必须循环遍历多达一百个大型(~300MB)XML文件的列表,每个文件最多附加1000个节点,重复整个过程几次(因为新节点列表被清除以节省内存)。目前我加载了整个XmlDocument在添加新节点之前先写入内存,目前这是不可行的。您认为解决此问题的最佳方法是什么?我有一些想法,但我不确定哪个是最好的:永远不要加载整个XMLDocument,而不是使用XmlReader和XmlWriter同时写入随后重命名的临时文件。制作XmlDocument仅适用于新节点,然后手动将其写入现有文件(即file.WriteLine("

java - 高效地将多个大型 xml 文件合并为一个文件

我在网上搜索,我在stackoverflow上下搜索。没有解决方案。虽然我找到了如何在纯xslt中执行此操作的解决方案here.但问题是生成的xml将有数百MB大。所以我必须用Java中的SAX来做到这一点。(请不要使用xslt解决方案,尽管我用xslt标记了它;-))让我更详细地解释一下。我有几个应该解析的多个xml文件(最好是InputSteam的)。文件或InputStream看起来像输入流1test1test2...输入流2test3test4...inputstream1+inputstream2+...+inputstreamN=生成的xml。看起来像test1test2.

xml - 使用单个 XSL 流将一个大型 XML 文件拆分为多个文件

我的目标是将包含各种内容(大约2到15GB)的大型单个XML文件拆分为多个XML文件,每个文件包含特定的实体类型,稍后可以通过SQL数据库导入。我目前正在使用Saxon-EE版本9.5.1.2J,但如果它能快速可靠地完成工作,任何其他XSL处理器都可以。这是我已经想到的:Saxon似乎是XSLT3.0事实上的标准处理器,而RaptorXML服务器似乎是另一个(更昂贵的)选择。其他XSL处理器通常只支持XSLT1.0。可以使用XSLT3.0流处理大文件,因此不需要将整个文件放入内存。注意:此功能仅在Saxon企业版中可用。您可以使用将输出写入不同的文件,但您可以不在相同样式表中多次使用它

xml - 在 +1 GB 的大型单行文本文件中使用 sed 在每个 > 之后引入换行符

我有一个巨大的文本文件(大约1.5GB),其中包含xml数据。文件中的所有文本都在一行中,并试图在任何文本编辑器中打开它(即使是在这个线程中提到的那些:Texteditortoopenbig(giant,huge,large)textfiles)由于文本编辑器在尝试滚动时挂起而失败或完全无法使用.我希望通过使用以下sed命令在文件中引入换行符sed's/>/>\n/g'data.xml>data_with_newlines.xml遗憾的是,这导致sed给我一个段错误。据我了解,sed逐行读取文件,在这种情况下,这意味着它试图在一行中读取整个1,5gig文件,这肯定会解释段错误。但是,问

c# - 如何在 TreeView 中快速显示大型 XML 文件(>21MB)

我需要在C#Windows窗体应用程序的TreeView控件中显示一个大型XML文件(>21MB)。我已经编写了适用于小型XML文件的代码,但是当我尝试打开大型XML文件(>1MB)时,它花费了太多时间。任何人都可以建议我如何优化它并建议我进行任何更改或替代方案来实现这一目标。下面是代码片段:privatevoidCreateTreeViewFromATXML(stringstrSrcFileName){XmlDataDocumentxmldoc=newXmlDataDocument();XmlNodexmlnode;FileStreamfs=newFileStream(strSrcF

xml - 使用 xslt 2.0 拆分大型 xml 文件

我有这个源xml文件。USVaUSVbUSV10....元素“KE”大约出现了30000次。我想每5000个“KE”创建一个新的XML文件。在30000个KE元素的情况下,结果必须是6个单独的xml文件,并且结构是源xml的副本。如何使用XSLT2.0实现这一点?我正在使用saxonhe9-5-1-3j。非常感谢... 最佳答案 使用XSLT2.0功能xsl:for-each-group和KE元素位置的模数。然后,使用xsl:result-document元素生成输出文档。我的示例XSLT代码为3个KE元素的组创建了一个新的结果文档

java - 如何将大型 XML 文件转换为 stream-like-java 8 对象

你好,我有一个(非常)大的XML文件(100GB),其中包含一个foo列表,我想将它转换成一个流,就像它们引入对象的java8一样:有关于库或代码示例的想法吗?开头:......最后:StreamfoosStream=????("foo.xml")streamFoos.forEach(foo->foo.doFooStuffs());编辑:@Pierre谢谢,这是您的解决方案的实现:try{XMLEventReaderreader=XMLInputFactory.newInstance().createXMLEventReader(stream);finalUnmarshallerunm

xml - 在内存中处理大型 XML 文档

我需要在内存中保存大量XML(很可能会使用OracleCoherence作为分布式缓存)。期望在内存中保存100,000个XML。这些XML相当大-大约。每个250KB。这些XML由其他系统请求-它们只请求与它们相关的XML部分。此外,他们还会要求更改XML的内容。负载将是每分钟大约300个这样的请求,或多或少均匀地分布在检索和更新之间。重要的一点是XML不是结构化的,所以我不会为它们提供XSD,但我有提取和更新XML的算法。我的问题是什么会产生更好的性能:将XML按原样保存在内存中,并通过使用XQuery甚至使用编码过程从中提取所有数据并进行更新,或者将XML转换为对象,在代码中操作

xml - 用于转换大型 XML 文件的内存高效 XSLT

这个问题与arecentanswerby有关michael.hor257k,它又与ananswerby相关迪米特雷·诺瓦切夫。当使用上述答案中的样式表时(来自michael.hor257k),对于大型XML(大约60MB,示例XML如下所示),转换成功进行。当尝试另一个样式表时,它与michael.hor257k的有点不同,目的是将元素(带有子sectPr)和它们的后续兄弟元素(直到下一个带有childsectPr),递归地(即将元素分组到输入XML的深度)。示例输入XML:我试过的样式表:出于好奇,我在转换大约60MB的XML时遇到了OutOfMemoryError。我想知道,我想我

xml - 如何搜索大型 XML 数据集?

我有一个带有XML的DataModule,我需要进行搜索...不幸的是有超过300,000条记录,我无法循环逐条检查。是否可以在不使用数据库的情况下进行查询?还有其他解决方案吗? 最佳答案 XML适用于少量信息,但对于那么大的数据集,关系数据库确实是唯一明智的选择,especiallyifyouneedtobeabletoqueryit. 关于xml-如何搜索大型XML数据集?,我们在StackOverflow上找到一个类似的问题: https://stack