Converting Special Chars in XML
Hi All,
I have written a program which converts all special characters in a invalid XML file.
Problem is :- I want to convert special characters for tag values which makes XML invalid, but it converts whole XML file.. which again makes it invalid for me .. please find the code below
publicclass ConvertXML{
staticchar[] invalid =newchar[]{'\"','&','\'','<','>'};
static String[] validReplacement =new String[]{""", "&", "'", "<", ">"};
static String output;
publicstaticvoid main(String arg[]){// ConvertXML()
try{
BufferedReader in =new BufferedReader(new FileReader("demo.xml"));
BufferedWriter out =new BufferedWriter(new FileWriter("outfilename.xml"));
String str;
while ((str = in.readLine()) !=null){
output =replace(invalid,validReplacement,str);
out.write(output);
System.out.println("output" + output);
}
out.close();
in.close();
}catch (IOException e){
System.out.println("File not exisit");
}catch(Exception e){System.out.println("File Cannot be read");}
}
publicstaticfinal String replace(char[] invalid,String[] validReplacement, String value){
if (value ==null){
returnnull;
}
char[] chars = value.toCharArray();
StringBuffer result =null;
int lastVisited = 0;
for (int i = 0; i < chars.length; i++){
int invalidIndex = Arrays.binarySearch(invalid, chars[i]);
if (invalidIndex < 0){
continue;
}
if (result ==null){
result =new StringBuffer();
}
result.append(chars, lastVisited, i - lastVisited);
result.append(validReplacement[invalidIndex]);
lastVisited = i + 1;
}
if (result ==null){
return value;
}
result.append(chars, lastVisited, chars.length - lastVisited);
return result.toString();
}
}
Please let me know where I am going wrong
Thanks.

