Back to index

wims  3.65+svn20090927
XmlTranslator.java
Go to the documentation of this file.
00001 package rene.util.xml;
00002 
00003 import rene.util.SimpleStringBuffer;
00004 
00005 public class XmlTranslator
00006 {      static SimpleStringBuffer H=new SimpleStringBuffer(10000);
00007        static String toXml (String s)
00008        {      int m=s.length();
00009               H.clear();
00010               for (int i=0; i<m; i++)
00011               {      char c=s.charAt(i);
00012                      switch(c)
00013                      {      case '<' : toH("&lt;"); break;
00014                             case '>' : toH("&gt;"); break;
00015                             case '&' : toH("&amp;"); break;
00016                             case '\'' : toH("&apos;"); break;
00017                             case '\"' : toH("&quot;"); break;
00018                             default : H.append(c);
00019                      }
00020               }
00021               return H.toString();
00022        }
00023        static void toH (String s)
00024        {      int m=s.length();
00025               for (int i=0; i<m; i++)
00026               {      H.append(s.charAt(i));
00027               }
00028        }
00029        static String toText (String s)
00030        {      int m=s.length();
00031               H.clear();
00032               for (int i=0; i<m; i++)
00033               {      char c=s.charAt(i);
00034                      if (c=='&')
00035                      {      if (find(s,i,"&lt;"))
00036                             {      H.append('<');
00037                                    i+=3;
00038                             }
00039                             else if (find(s,i,"&gt;"))
00040                             {      H.append('>');
00041                                    i+=3;
00042                             }
00043                             else if (find(s,i,"&quot;"))
00044                             {      H.append('\"');
00045                                    i+=5;
00046                             }
00047                             else if (find(s,i,"&apos;"))
00048                             {      H.append('\'');
00049                                    i+=5;
00050                             }
00051                             else if (find(s,i,"&amp;"))
00052                             {      H.append('&');
00053                                    i+=4;
00054                             }
00055                             else H.append(c);
00056                      }
00057                      else H.append(c);
00058               }
00059               return H.toString();
00060        }
00061        static boolean find (String s, int pos, String t)
00062        {      try
00063               {      for (int i=0; i<t.length(); i++)
00064                      {      if (s.charAt(pos+i)!=t.charAt(i)) return false;
00065                      }
00066                      return true;
00067               }
00068               catch (Exception e)
00069               {      return false;
00070               }
00071        }
00072 }