我有一个1GB的Xml文件,如何使用Java将其拆分成格式更小的Xml文件?
这是一个例子:
<records>
<record id="001">
<name>john</name>
</record>
....
</records>
谢谢。
在这种情况下,我将使用StAX解析器。这样可以防止将整个文档一次读入内存。
代码示例
对于以下XML,将每个“语句”部分输出到以“帐户属性值”命名的文件中:
<statements>
<statement account="123">
...stuff...
</statement>
<statement account="456">
...stuff...
</statement>
</statements>
可以使用以下代码完成此操作:
import java.io.File;
import java.io.FileReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLStreamReader;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stax.StAXSource;
import javax.xml.transform.stream.StreamResult;
public class Demo {
public static void main(String[] args) throws Exception {
XMLInputFactory xif = XMLInputFactory.newInstance();
XMLStreamReader xsr = xif.createXMLStreamReader(new FileReader("input.xml"));
xsr.nextTag(); // Advance to statements element
TransformerFactory tf = TransformerFactory.newInstance();
Transformer t = tf.newTransformer();
while(xsr.nextTag() == XMLStreamConstants.START_ELEMENT) {
File file = new File("out/" + xsr.getAttributeValue(null, "account") + ".xml");
t.transform(new StAXSource(xsr), new StreamResult(file));
}
}
}
问题内容: 我有一个字符串如下: 我想提取数字:872226816,因此在这种情况下,我假设在第二个逗号开始读取数据之后,随后的逗号结束数据读取。 输出示例: 问题答案: 用于String.split()的 Javadoc
我有一个带有注释的csv文件,其值需要在两个ArrayList之间拆分。例如: 实现这一目标的最佳方式是什么?我是否应该使用一个计数器,每次状态从%变到某个值时递增,反之亦然,然后如果计数器% 2 = 0,那么添加一个新的ArrayList并开始写入它?这是我能想到的唯一办法,但似乎有点笨拙,还有人有更好的主意吗? 编辑:我已经写了实际解析csv值的代码,我不需要帮助,只是想知道如何将值分成两个列
我是新使用python阅读文本文件。我需要读一个文件,每行有4个我需要的数据,这是我的文本文件 我的问题是,如果我使用,它只用每行创建一个向量,但是我只需要一个向量用于第一列,一个用于第二列,一个用于第三列,还有一个用于第四列...有谁能帮帮我吗?
问题内容: 我有完整的文件路径,我想获取文件名。 我正在使用以下指令: 但是在Windows上它提供了: 我可以避免这种例外吗?有一个更好的方法吗? 问题答案: 问题是必须转义才能在正则表达式 中将 其 用作反斜杠 。您应该使用 不 使用正则表达式 的拆分API __ ,或者首先使用: 甚至更好,为此使用API:
问题内容: 我想像这将是一个简单的任务,但在以前的StackOverflow问题中我找不到我正在寻找的东西…… 我有一个专有格式的大文本文件,看起来像这样: 依此类推。 文本文件的大小从10kb到100mb不等。我需要用定界符分割此文件。如何基于块处理每个文件? 问题答案: 您可以使用itertools.groupby对列表中出现的行进行分组: 产量 或者,要处理组,您实际上不需要转换为列表:
我正在尝试编写一个应用程序,它将占用一个非常大的sql文本文件~60GB(2.57亿行),并将每个COPY语句拆分为单独的文本文件。 但是,我目前使用的代码会导致OutOfMemoryError,因为行超过了扫描仪缓冲区限制。第一个语句将是4000万行。 请提供建议,说明这是执行此操作的错误方法还是对现有方法的修改。 谢啦