我在Java中使用1.2 GB
解析一个SAX Parser
的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);
答案 0 :(得分:0)
通过调用System.out.print
来取代对fstream.write
的通话 - 有些通话略有不同,请阅读Javadoc。
但是,我想知道为什么要解析文件,如果你只是想复制它?如果您的唯一目标是顶级复制它,只需打开输入流,读取数据缓冲区并将其写入输出流,循环直到您点击eof。
答案 1 :(得分:0)
您需要通过执行以下操作将控制台输出重定向到文件:
PrintStream out = new PrintStream(new FileOutputStream("out.txt"));
System.setOut(out);
编辑:直接写入fstream的另一个答案可能是更好的。