本站不再更新,歡迎光臨 java開發技術網
          隨筆-230  評論-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文件路徑從界面傳進來..</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文件路徑由頁面傳進來</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>修改某個節點</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>文件路徑由頁面傳輸進來!</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>在當前xpath路徑處,添加一個節點</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>文件路徑由頁面傳進來</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>刪除某個節點,map參數必須有一個鍵名為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) 評論(0)  編輯  收藏 所屬分類: jdk
          本站不再更新,歡迎光臨 java開發技術網
          主站蜘蛛池模板: 克什克腾旗| 金秀| 云南省| 兴业县| 突泉县| 新泰市| 乾安县| 巴青县| 沽源县| 宿州市| 玉山县| 钟祥市| 宜都市| 白河县| 高陵县| 渭南市| 北碚区| 休宁县| 莱芜市| 怀来县| 南溪县| 丹江口市| 宁化县| 五大连池市| 泰来县| 榆中县| 龙海市| 镇康县| 桐城市| 紫阳县| 清苑县| 渑池县| 永登县| 报价| 修水县| 茂名市| 石屏县| 南木林县| 巴楚县| 科尔| 游戏|