有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在用Java中的SAX Parser解析一个1.2 GB的XML文件。结果在Console中不完整。我试图做的是将解析后的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]);
}
}
}

以下是main方法:

public static void main(String[] args ) throws IOException, SAXException
{
XMLReader p = XMLReaderFactory.createXMLReader();
p.setContentHandler(new Parser());
p.parse("dblp.xml");
}

我想将这个XML文件的所有内容至少写入一个文本文件。我还考虑将内容写入另一个XML文件。谁能帮我写一下XML文件的内容吗。我以某种方式尝试了以下代码:

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

共 (2) 个答案

  1. # 1 楼答案

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

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

  2. # 2 楼答案

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

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

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