Back to index

wims  3.65+svn20090927
XmlTag.java
Go to the documentation of this file.
00001 package rene.util.xml;
00002 
00003 
00004 public class XmlTag
00005 {      protected String Tag="";
00006        String Param[];
00007        String Value[];
00008        int N=0;
00009        public XmlTag (String s)
00010        {      int n=0;
00011               int k=0;
00012               n=skipBlanks(s,n);
00013               while (n<s.length())
00014               {      n=endItem(s,n);
00015                      k++;
00016                      n=skipBlanks(s,n);
00017               }
00018               if (k==0) return;
00019               n=0;
00020               n=skipBlanks(s,n);
00021               int m=endItem(s,n);
00022               Tag=s.substring(n,m);
00023               n=m;
00024               N=k-1;
00025               Param=new String[N];
00026               Value=new String[N];
00027               for (int i=0; i<N; i++)
00028               {      n=skipBlanks(s,n);
00029                      m=endItem(s,n);
00030                      String p=s.substring(n,m);
00031                      n=m;
00032                      int kp=p.indexOf('=');
00033                      if (kp>=0)
00034                      {      Param[i]=p.substring(0,kp);
00035                             Value[i]=XmlTranslator.toText(p.substring(kp+1));
00036                             if (Value[i].startsWith("\"") && Value[i].endsWith("\""))
00037                             {      Value[i]=Value[i].substring(1,Value[i].length()-1);
00038                             }
00039                             else if (Value[i].startsWith("\'") && Value[i].endsWith("\'"))
00040                             {      Value[i]=Value[i].substring(1,Value[i].length()-1);
00041                             }
00042                      }
00043                      else
00044                      {      Param[i]=p;
00045                             Value[i]="";
00046                      }
00047               }
00048        }
00049        int skipBlanks (String s, int n)
00050        {      while (n<s.length())
00051               {      char c=s.charAt(n);
00052                      if (c==' ' || c=='\t' || c=='\n') n++;
00053                      else break;
00054               }
00055               return n;
00056        }
00057        int endItem (String s, int n)
00058        {      while (n<s.length())
00059               {      char c=s.charAt(n);
00060                      if (c==' ' || c=='\t' || c=='\n') break;
00061                      if (c=='\"')
00062                      {      n++;
00063                             while (true)
00064                             {      if (n>=s.length()) return n;
00065                                    if (s.charAt(n)=='\"') break;
00066                                    n++;
00067                             }
00068                      }
00069                      else if (c=='\'')
00070                      {      n++;
00071                             while (true)
00072                             {      if (n>=s.length()) return n;
00073                                    if (s.charAt(n)=='\'') break;
00074                                    n++;
00075                             }
00076                      }
00077                      n++;
00078               }
00079               return n;
00080        }
00081        public String name ()
00082        {      return Tag;
00083        }
00084        public int countParams ()
00085        {      return N;
00086        }
00087        public String getParam (int i)
00088        {      return Param[i];
00089        }
00090        public String getValue (int i)
00091        {      return Value[i];
00092        }
00093        public boolean hasParam (String param)
00094        {      for (int i=0; i<N; i++)
00095                      if (Param[i].equals(param)) return true;
00096               return false;
00097        }
00098        public boolean hasTrueParam (String param)
00099        {      for (int i=0; i<N; i++)
00100                      if (Param[i].equals(param))
00101                      {      if (Value[i].equals("true")) return true;
00102                             return false;
00103                      }
00104               return false;
00105        }
00106        public String getValue (String param)
00107        {      for (int i=0; i<N; i++)
00108                      if (Param[i].equals(param)) return Value[i];
00109               return null;
00110        }
00111 }
00112