日期:2014-05-20  浏览次数:20780 次

xml文件的读写问题
因为我的xml文件中存在JDOM中不允许出现的字符& 和'和",所以我写了如下的读写代码替换非法字符
public void CharExchange(File path) throws IOException
{  
FileReader fr=new FileReader(path);
BufferedReader br=new BufferedReader(fr);

//String s1=br.readLine();
String s=br.readLine();
StringBuffer sb=new StringBuffer("");

while(s!=null)
{
String sNew=s.replaceAll("&", "&").replaceAll("\'", "'").replaceAll("\"",""");
sb.append(sNew);
sb.append("\n");
s=br.readLine();
}
br.close();

FileWriter fw=new FileWriter(path);
BufferedWriter bw=new BufferedWriter(fw);
 
bw.write(sb.toString());
//bw.flush();

bw.close();
}
但结果显示,很多中文字符如"。"「"和"」"等都不能正常显示,总之就是重写后的文件跟原来的文件不同了,再用JDOM读结果也不正确,大家棒棒我!刚学java不久,真够菜的,惭愧中。。。

------解决方案--------------------
显然, 这是跟你替换的过程有关系, 做了错误的替换. 和解析器一点关系都没有.
fr的文件内容是XML文件吗?
如果是的话,你肯定是不能这么替换的了。难道你不知道属性有用到""或者''吗?另外,某部分的中文字符,可能有用到&符号。
这个问题,我建议你在源头上进行处理,生成的时候就用解析器生成,该转义的转义。
如果错误的XML已经生成,那已经很难去做替换了。除非你对正则表达式能运用自如,否则不推荐新手这么做。
最后,既然决定要用XML,就应该遵守XML的规则,养成好习惯,重新来写吧。