Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中将解析后的XML文件写入另一个文件_Java_Xml_File Io_Sax - Fatal编程技术网

如何在Java中将解析后的XML文件写入另一个文件

如何在Java中将解析后的XML文件写入另一个文件,java,xml,file-io,sax,Java,Xml,File Io,Sax,我正在用Java中的SAX解析器分析一个1.2GB的XML文件。在控制台中,结果不完整。我试图做的是将解析后的XML文件写入另一个文件。下面是我使用SAX解析XML文件的代码: public class Parser extends DefaultHandler { public void startDocument() { System.out.println("Begin parsing the document .. "); } public void endDocument() {

我正在用Java中的
SAX解析器分析一个
1.2GB
的XML文件。在
控制台中,结果不完整。我试图做的是将解析后的XML文件写入另一个文件。下面是我使用SAX解析XML文件的代码:

public class Parser extends DefaultHandler
{

public void startDocument()
{
System.out.println("Begin parsing the document .. ");
}

public void endDocument()
{
System.out.println("End parsing document ..");
}

public void startElement(String namespaceURI, String localName,String rawName, Attributes atts) throws SAXException 
{
System.out.print("<" + rawName + ">");
}

public void endElement(String namespaceURI, String localName, String rawName) throws SAXException 
 {
System.out.print("</" + rawName + ">");
 }

public void characters(char[] ch, int start, int length) throws SAXException 
 {
for (int i=0; i<(start + length); i++)
{
    System.out.print(ch[i]);
}
}
}
我想将这个XML文件的所有内容至少写入一个文本文件。我还考虑将内容写入另一个XML文件。谁能帮我写一下XML文件的内容吗。我以某种方式尝试了以下代码:

FileWriter fstream = new FileWriter("out.txt"); 
BufferedWriter out = new BufferedWriter(fstream);

将对
System.out.print
的调用替换为对
fstream.write的调用-有些调用略有不同,因此请阅读Javadoc


但是,我想知道,如果您只是尝试复制文件,为什么要解析该文件?如果您的唯一目标是顶层复制,只需打开一个输入流,读取数据缓冲区并将其写入输出流,循环直到达到eof。

您需要通过执行以下操作将控制台输出重定向到文件:

PrintStream out = new PrintStream(new FileOutputStream("out.txt"));
System.setOut(out);

编辑:直接写入fstream的另一个答案可能更好。

请解释您尝试代码时发生的情况。你的问题不清楚你面临什么问题。请在包含代码示例时使用一致的缩进,否则它们更难阅读。代码正在解析XML文件。例如,我所需要的就是将解析的输出写入另一个文本文件。我是问你试过的时候发生了什么?我很困惑,你是否有一些坏代码需要我们帮助修复,或者你是否希望有人会为你编写这些代码。如果您在回复中包含
@Duncan
,我将收到您回复的通知。当我运行代码时,输出将显示在控制台中。我不知道如何将这些输出写入文本文件。它不应该被打破。我只是用一个小XML文件测试了它。解析的输出显示在Eclipse中的控制台中。您要寻找的是将控制台输出获取到一个文件中,因为您的解析器正在将所有内容写入控制台中。为此,非常感谢您。基本上,我无法打开文件,也不明白为什么。我相信fstream.write可以解决这个问题。非常感谢。我现在就试试看。
PrintStream out = new PrintStream(new FileOutputStream("out.txt"));
System.setOut(out);