通过Java读取XML,替换文本和写入相同的XML文件

Bil*_*zac 3 java xml xalan

目前我正在尝试一些非常简单的事情 我正在浏览一个XML文档,查找我试图替换它的某个短语.我遇到的问题是,当我读取行时,我将每行存储到StringBuffer中.当我将它写入文档时,所有内容都写在一行上.

这是我的代码:

File xmlFile = new File("abc.xml")
BufferedReader br = new BufferedReader(new FileReade(xmlFile));
String line = null;
while((line = br.readLine())!= null)
{
    if(line.indexOf("abc") != -1)
    {
        line = line.replaceAll("abc","xyz");
    }         
    sb.append(line);                
}
br.close();

BufferedWriter bw = new BufferedWriter(new FileWriter(xmlFile));
bw.write(sb.toString());
bw.close();
Run Code Online (Sandbox Code Playgroud)

我假设我需要一个新的行字符,当我更喜欢sb.append但不幸的是我不知道使用哪个字符"\n"不起作用.

提前致谢!

PS我认为必须有一种方法可以在我写入XML文件之后使用Xalan格式化XML文件.不知道该怎么做.

Bre*_*rel 7

readline读取换行符之间的所有内容,因此当您回写时,显然缺少换行符.这些字符取决于操作系统:Windows使用两个字符来换行,例如unix使用一个换行符.要与操作系统无关,请检索系统属性"line.separator":

String newline = System.getProperty("line.separator");
Run Code Online (Sandbox Code Playgroud)

并将其附加到您的stringbuffer:

sb.append(line).append(newline);
Run Code Online (Sandbox Code Playgroud)

  • 另一种可能性是使用`PrintWriter`及其`println`方法,它将自动将系统正确的行终止符附加到任何字符串输出.实际上,我会说这是将行写入输出文件的"标准"方法. (2认同)