本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          隨筆-230  評(píng)論-230  文章-8  trackbacks-0
          ?import org.jdom.*;
          import org.jdom.output.*;
          import org.jdom.input.*;
          import org.jdom.xpath.*;

          import java.io.FileOutputStream;
          import java.lang.reflect.Field;
          import java.lang.reflect.Method;
          import java.util.*;


          /**
          * @author Peter (C)www.ldtec.com
          *
          * 處理xml配置文件
          *
          */

          public class SearchUtil {
          private static String tablelistfile="C:/tomcat/webapps/csms/WEB-INF/search/tablelist.xml";

          /**
          * <p>通過類反射來獲得xml文件的信息</p>
          * @param vbean
          * @param filepath
          * @param xpath
          * @return result
          */
          public static List search(Class vbean,String xpath){
          List result=new ArrayList();
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(tablelistfile);
          root=doc.getRootElement();
          List xlist=XPath.selectNodes(root,xpath);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int i=0;i<xlist.size();i++){
          Element xele=(Element)xlist.get(i);
          Object myclass=new Object();
          myclass=Class.forName(vbean.getName()).newInstance();
          for(int k=0;k<field.length;k++){
          String vname=field[k].getName();
          String method=vname.substring(0,1).toUpperCase()+vname.substring(1,vname.length());
          String vmethod="set"+method;
          Class[] clazz = new Class[1] ;
          clazz[0] = String.class ;
          Method met = Class.forName(vbean.getName()).getMethod(vmethod,clazz) ;
          Object[] obj = new Object[1] ;
          obj[0] = xele.getAttributeValue(field[k].getName());
          Object ret = met.invoke(myclass,obj) ;
          }
          result.add(myclass);
          }
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }

          /**
          * <p>xml文件路徑從界面?zhèn)鬟M(jìn)來..</p>
          * @param vbean
          * @param filepath
          * @param xpath
          * @return
          */
          public static List search(Class vbean,String filepath ,String xpath){
          List result=new ArrayList();
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(filepath);
          root=doc.getRootElement();
          List xlist=XPath.selectNodes(root,xpath);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int i=0;i<xlist.size();i++){
          Element xele=(Element)xlist.get(i);
          Object myclass=new Object();
          myclass=Class.forName(vbean.getName()).newInstance();
          for(int k=0;k<field.length;k++){
          String vname=field[k].getName();
          String method=vname.substring(0,1).toUpperCase()+vname.substring(1,vname.length());
          String vmethod="set"+method;
          Class[] clazz = new Class[1] ;
          clazz[0] = String.class ;
          Method met = Class.forName(vbean.getName()).getMethod(vmethod,clazz) ;
          Object[] obj = new Object[1] ;
          obj[0] = xele.getAttributeValue(field[k].getName());
          Object ret = met.invoke(myclass,obj) ;
          }
          result.add(myclass);
          }
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }

          /**
          * <p>xml文件路徑由頁面?zhèn)鬟M(jìn)來</p>
          * @param vbean
          * @param filepath
          * @param xpath
          * @param map
          * @return
          */
          public static boolean modify(Class vbean,String filepath,String xpath,Map map){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(filepath);
          root=doc.getRootElement();
          List xlist=XPath.selectNodes(root,xpath);
          Element xele=(Element)xlist.get(0);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int k=0;k<field.length;k++){
          xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName()));
          }

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(filepath));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }


          /**
          * <p>修改某個(gè)節(jié)點(diǎn)</p>
          * @param vbean
          * @param xpath
          * @return
          */
          public static boolean modify(Class vbean,String xpath,Map map){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(tablelistfile);
          root=doc.getRootElement();
          List xlist=XPath.selectNodes(root,xpath);
          Element xele=(Element)xlist.get(0);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int k=0;k<field.length;k++){
          xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName()));
          }

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(tablelistfile));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }


          /**
          * <p>文件路徑由頁面?zhèn)鬏斶M(jìn)來!</p>
          * @param vbean
          * @param filepath
          * @param xpath
          * @param map
          * @return
          */
          public static boolean add(Class vbean,String filepath,String xpath,Map map,String strele){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{

          doc=builder.build(filepath);
          root=doc.getRootElement();
          Element tablelistEle=(Element)XPath.selectSingleNode(root,xpath);
          List xlist=tablelistEle.getChildren();
          Element xele=new Element(strele);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int k=0;k<field.length;k++){
          xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName()));
          }
          xlist.add(xele);

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(filepath));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }
          /**
          * <p>在當(dāng)前xpath路徑處,添加一個(gè)節(jié)點(diǎn)</p>
          * @param vbean
          * @param xpath
          * @param map
          * @return
          */
          public static boolean add(Class vbean,String xpath,Map map,String strele){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{

          doc=builder.build(tablelistfile);
          root=doc.getRootElement();
          Element tablelistEle=(Element)XPath.selectSingleNode(root,xpath);
          List xlist=tablelistEle.getChildren();
          Element xele=new Element(strele);
          Field[] field=Class.forName(vbean.getName()).getDeclaredFields();
          for(int k=0;k<field.length;k++){
          xele.setAttribute(field[k].getName(),(String) map.get(field[k].getName()));
          }
          xlist.add(xele);

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(tablelistfile));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }

          /**
          * <p>文件路徑由頁面?zhèn)鬟M(jìn)來</p>
          * @param vbean
          * @param filepath
          * @param xpath
          * @param map
          * @return
          */
          public static boolean remove(Class vbean,String filepath,String xpath,Map map){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(filepath);
          root=doc.getRootElement();
          List templist=XPath.selectNodes(root,xpath);
          String key=(String)map.get("key");
          String value="/(String)map.get(""value");
          int row=0;
          boolean flag=false;
          for(int i=0;i<templist.size();i++){
          Element tempele=(Element)templist.get(i);
          if(tempele.getAttributeValue(key).equals(value)){
          row=i;
          flag=true;
          }
          }
          if(flag==false){
          return false;
          }
          int pos=0;
          pos=xpath.lastIndexOf("/");
          String vpath=xpath.substring(0,pos);
          Element xele=(Element)XPath.selectSingleNode(root,vpath);
          List xlist=xele.getChildren();
          if(flag){
          xlist.remove(row);
          result=true;
          }

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(filepath));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }
          /**
          * <p>刪除某個(gè)節(jié)點(diǎn),map參數(shù)必須有一個(gè)鍵名為key和value</p>
          * @param vbean
          * @param xpath
          * @param map
          * @return result
          */
          public static boolean remove(Class vbean,String xpath,Map map){
          boolean result=false;
          SAXBuilder builder=new SAXBuilder();
          Document doc=null;
          Element root=null;
          try{
          doc=builder.build(tablelistfile);
          root=doc.getRootElement();
          List templist=XPath.selectNodes(root,xpath);
          String key=(String)map.get("key");
          String value="/(String)map.get(""value");
          int row=0;
          boolean flag=false;
          for(int i=0;i<templist.size();i++){
          Element tempele=(Element)templist.get(i);
          if(tempele.getAttributeValue(key).equals(value)){
          row=i;
          flag=true;
          }
          }
          if(flag==false){
          return false;
          }
          int pos=0;
          pos=xpath.lastIndexOf("/");
          String vpath=xpath.substring(0,pos);
          Element xele=(Element)XPath.selectSingleNode(root,vpath);
          List xlist=xele.getChildren();
          if(flag){
          xlist.remove(row);
          result=true;
          }

          Format format = Format.getCompactFormat();
          format.setEncoding("gb2312");
          format.setIndent(" ");
          XMLOutputter XMLOut = new XMLOutputter(format);
          XMLOut.output(doc,new FileOutputStream(tablelistfile));
          result=true;
          }catch(Exception e){
          e.printStackTrace();
          }
          return result;
          }
          public static void main(String args[]){

          Map kk=new HashMap();
          kk.put("f1","xxxx");
          kk.put("f2","MMMM");
          kk.put("f3","JJJJ");
          String v="kkk()";

          String temp=(v.substring(0,1)).toUpperCase();
          String vv=temp+v.substring(1,v.length());
          System.out.println("temp->>"+temp);
          System.out.println("vv->"+vv);
          String path="c:/kk/lo.xml";
          int start=path.lastIndexOf("/");
          int end=path.lastIndexOf(".");
          String xx=path.substring(start+1,end);
          System.out.println("----xx->"+xx);
          }

          }
          posted on 2006-10-13 09:12 有貓相伴的日子 閱讀(1322) 評(píng)論(0)  編輯  收藏 所屬分類: jdk
          本站不再更新,歡迎光臨 java開發(fā)技術(shù)網(wǎng)
          主站蜘蛛池模板: 肥乡县| 会泽县| 河南省| 新疆| 阿鲁科尔沁旗| 双城市| 英山县| 额敏县| 滨州市| 黎平县| 视频| 凉城县| 安徽省| 咸丰县| 佛山市| 墨玉县| 策勒县| 昭觉县| 兴安县| 庆云县| 赤峰市| 宝鸡市| 大邑县| 宁海县| 平利县| 辰溪县| 郸城县| 苗栗市| 泗水县| 惠水县| 锡林郭勒盟| 曲靖市| 天津市| 余干县| 岫岩| 宣汉县| 千阳县| 易门县| 晋宁县| 平塘县| 双柏县|