我想知道是否有人知道是否可以使用
Java中的一个XML解析器逐行读取XML文档中的每一行,并基本上在另一个XML文件中重现相同的文档? (在我的例子中,只取出文档中从点X到点Y的行并复制它们).我考虑过在小型试运行中使用bufferedreader和bufferedwriter,但它没有完全正确地输出文件.以下是我在试运行中所做的事情,但这不是我想要的.那么有没有人有这方面的经验或有任何想法或建议提供?先感谢您.
JAVA CODE
public class IPDriver { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new FileReader("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/document.xml")); BufferedWriter writer = new BufferedWriter(new FileWriter("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/tempdocument.xml")); String line = null; while ((line = reader.readLine()) != null) { writer.write(line); } // Close to unlock. reader.close(); // Close to unlock and flush to disk. writer.close(); } }
使用Ted Hopp工作JAVA代码
public class IPDriver { public static void main(String[] args) throws IOException { BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/document.xml"),"UTF-8")); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("C:/Documents and Settings/user/workspace/Intern Project/Proposals/Converted Proposals/Extracted Items/ProposalOne/word/tempdocument.xml"),"UTF-8")); String line = null; while ((line = reader.readLine()) != null) { writer.write(line); } // Close to unlock. reader.close(); // Close to unlock and flush to disk. writer.close(); } }
解决方法
如果你的代码没有正确复制文件,我猜你有一个字符编码问题.由于XML的默认编码是UTF-8,而FileReader的默认编码是您平台的默认编码,我建议改为:
BufferedReader reader = new BufferedReader( new InputStreamReader( new FileInputStream("...input file path..."),"UTF-8" ) ); BufferedWriter writer = new BufferedWriter( new OutputStreamWriter( new FileOutputStream("...output file path..."),"UTF-8" ) );
XML解析器将为您提供元素(或元素事件),而不是行.例如,他们无法区分空白区域的变化:
<tag attr1="val1" attr2="val2" />
与:
<tag attr1="val1" attr2="val2" />