解析SQL语句中的WHERE条件。 privatestaticfinalString[]DEFINE_STRING=...{"and(","or(","and(","or(","and","or"};privateStringparseNode(ElementelParent,StringsNode,StringsRelation)...{ListlstRemenber=newArrayList();if(sNode.trim().startsWith("(")&&sNode.trim().endsWith(")"))...{StringsTempNode=sNode.trim().substring(1,sNode.trim().length()-1).trim();if(!sTempNode.startsWith("("))...{booleanbValid=validSql(sTempNode);if(bValid)...{returnparseNode(elParent,sTempNode,sRelation);}}else...{returnparseNode(elParent,sTempNode,sRelation);}}ElementelGroup=null;StringsLastRelation="";intlLastPos=0;inti=0;intiTimes=0;while(i<sNode.length()-1)...{intiStep=1;booleanbStatus=isEvenStr(lstRemenber,sNode.substring(i,i+1));if(i!=0&&bStatus)...{for(intn=0;n<DEFINE_STRING.length;n++)...{if(i<sNode.length()-DEFINE_STRING[n].length())...{StringsTemp=sNode.substring(i,i+DEFINE_STRING[n].length());if(sTemp.equalsIgnoreCase(DEFINE_STRING[n]))...{iStep=sTemp.length();if(sTemp.endsWith("("))...{iStep--;}iTimes+=1;//group-createif(elGroup==null)...{elGroup=createXmlNode(elParent,sNode,sRelation,true);}parseNode(elGroup,sNode.substring(lLastPos,i).trim(),sLastRelation);sLastRelation=sTemp.replaceAll("/(","").trim();lLastPos=i+iStep;break;}}}}i+=iStep;}if(iTimes==0)//normalnodecreateXmlNode(elParent,sNode,sRelation,false);else...{//group-createif(elGroup==null)...{elGroup=createXmlNode(elParent,sNode,sRelation,true);}//intiEndPos=sNode.length();if(sLastRelation.endsWith("("))...{iEndPos--;}parseNode(elGroup,sNode.substring(lLastPos,iEndPos),sLastRelation);}returnnull;} privatebooleanvalidSql(StringsNode)...{//System.out.println("VALIDSQL("+(++iCount)+")::"+sNode);try...{ListlstRemenber=newArrayList();inti=0;while(i<sNode.length())...{isEvenStr(lstRemenber,sNode.substring(i,i+1));i++;}//System.out.println("VALIDSQL-RESULT::"+(lstRemenber.size()==0));returnlstRemenber.size()==0;}catch(Exceptionerr)...{//System.out.println("VALIDSQL-RESULT::err-false");returnfalse;}}privatebooleanisEvenStr(ListlstRemenber,StringsStr)...{if(sStr.equals("("))...{lstRemenber.add(sStr);}elseif(sStr.equals(")"))...{lstRemenber.remove(lstRemenber.indexOf("("));}elseif(sStr.equals("""))...{intiPos=lstRemenber.indexOf(""");if(iPos!=-1)...{lstRemenber.remove(iPos);}else...{lstRemenber.add(""");}}elseif(sStr.equals("'"))...{intiPos=lstRemenber.indexOf("'");if(iPos!=-1)...{lstRemenber.remove(iPos);}else...{lstRemenber.add("'");}}returnlstRemenber.size()==0;}