服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java 与 xml 结合使用的心得体会(二)


  xmltooltest.class实现了对xml文档的操作。包括建立一个新xml document.档结构及内容或从指定xml文件或的document.构和内容,output到指定的xml文件(或更新xml文件),获取和设定指定节点名的指定属性(或属性列表),在指定节点添加子节点、删除子节点、编辑子节点(先删除在添加,待完善),支持在文档中定位(下标定位,和查询定位,如:定位到test节点的 name attribute的value="张治中"的节点,有简单的复合查询定位,暂时是全and的关系. :) ),定位后可以和全面的操作联合使用(有点数据库的影子,和自己想做的应用有关)。后来又根据它做了一个数据库和xml对导的例子。代码如下:
  
  package com.ceic.workflow.xml.tool;
  import com.ceic.workflow.xml.*;
  import org.w3c.dom.*;
  /**
   * title:    xml处理工具的 运算和实现部分的接口
   * description: xml处理工具的 运算和实现部分的接口
   * copyright:  copyright (c) 2003
   * company:   国电信息中心
   * @author 张治中
   * @version 1.0
   * xml处理工具的 运算和实现部分 的接口
   * xmltool的实现子类,其中的xml解析器从xmlparserfactory中获得.
   * 没有说明的方法和参数参见xmltool接口.
   */
  public class xmltooltest implements xmltool
  {
  
   private xmlparser parser;
   private string parsertype=
    xmlparserfactory.getdefaulttype();
   private string parserclassname="";
   private int index=0;
   private string markname="";
   private document.nbspdoc;
   private int defaultbegin=0;
   private string encoding="utf8";
   private string filepath="";
   private boolean enablemakeup=false;
   private string header="";
    public xmltooltest()
    {
  
    }
    public object build(string path, boolean vali)
    {
     if(path!=null&&path.length() >0){
      parser=xmlparserfactory.getxmlparser
      (parsertype,parserclassname);
      if(parser!=null){
      doc=(document.parser.parse(path,vali);
      filepath=path;
      return doc;
      }
     }
    return null;
    }
    public object build(string xmlstring)
    {
     if(xmlstring!=null&&xmlstring.length() >0){
      parser=xmlparserfactory.getxmlparser
      (parsertype,parserclassname);
      if(parser!=null){
      doc=(document.parser.parsestring(xmlstring);
      filepath="";
      return doc;
      }
     }
    return null;
    }
    public void setdocument.ource(document.nbspdocs){
     doc=docs;
    }
  
    public void setparser(string parsername, string classname)
    {
    if(parsername!=null&&parsername.length() >0){
     parsertype=parsername;
     parserclassname=classname;
    }
    }
  
    public void setproperty(string nodename,string
    propertyname,string value,boolean setall){
     try{
      nodelist list=doc.getelementsbytagname(nodename);
      if(list.getlength() >0&&value!=null&&value.length()>0)
       {
       if(setall){
        for(int i=0;i  
         if(propertyname!=null&&propertyname.length()>0)
      {
  
          ((element)list.item(i)).setattribute
   (propertyname,value);
         }
        else{
          list.item(i).setnodevalue(value);
        }
       }
  
       }else{
  
       if(propertyname!=null&&propertyname.length()>0){
        if(nodename.equals(markname)){
          ((element)list.item(index)).setattribute
   (propertyname,value);
         }
       else{
          ((element)list.item(defaultbegin)).
       setattribute(propertyname,value);
       }
      }else{
  
       if(nodename.equals(markname)){
          list.item(index).setnodevalue(value);
        }
       else{
         list.item(defaultbegin).setnodevalue(value);
       }
  
      }
      }
     }
     }catch(exception ee){
      system.out.println("设定"+nodename+"节点的"+
      propertyname+"属性出错");
     }
    }
  
    public string getproperty(string nodename,
     string propertyname)
    {
     try{
     nodelist list=doc.getelementsbytagname(nodename);
     if(list.getlength() >0){
     if(propertyname!=null&&propertyname.length() >0){
      if(nodename.equals(markname)){
       return ((element)list.item(index)).getattribute
    (propertyname);
      }else{
       return ((element)list.item(defaultbegin)).
    getattribute(propertyname);
      }
     }else{
      if(nodename.equals(markname)){
       return ((element)list.item(index)).getnodevalue()
      }else{
       return ((element)list.item(defaultbegin)).
    getnodevalue()
      }
     }
     }
     return null;
     }catch(exception ee){
      system.out.println("getproperty("+nodename+","+
      propertyname+");出错"+ee.getmessage());
      return null;
     }
   }
   public string[] getpropertys(string nodename,
    string propertyname)
    {
     try{
      string[] temp;
      nodelist list=doc.getelementsbytagname(nodename);
      if(list.getlength() >0){
       if(propertyname!=null&&propertyname.length() >0){
        temp=new string[list.getlength()];
        for(int i=0;i         temp[i]=((element)list.item(i)).
      getattribute(propertyname);
        }
        return temp;
       }else{
        temp=new string[list.getlength()];
        for(int i=0;i         temp[i]=((element)list.item(i)).getnodevalue()
        }
        return temp;
       }
      }
      return null;
     }catch(exception ee){
      system.out.println("getpropertys("+nodename+","+
      propertyname+");出错");
      return null;
     }
   }
  
   public string getparent(string returnattr){
    string tempreturn="";
    string tempnode=markname
    int tempindex=index
    nodelist list=doc.getelementsbytagname(markname);
    node node=list.item(index);
    if(returnattr!=null&&returnattr.length() >0){
     tempreturn=((element)node.getparentnode()).
      getattribute(returnattr);
    }else{
     tempreturn=node.getparentnode().getnodevalue()
    }
    return tempreturn;
    }
  
  
    public void setformat(string xmltoolname,
     string classname){}
  
    public void addnode(string parent, node nodename,
     boolean addall)
    {
     try{
     nodelist list=doc.getelementsbytagname(parent);
  
     if(list.getlength() >0){
      if(addall){
       for(int i=0;i        int type=nodename.getnodetype()
        switch(type){
         case node.attribute_node: {
          ((element)list.item(i)).setattribute(((attr)
       nodename).getname() ,((attr)nodename).getvalue());
         }
         default:{
          list.item(i).appendchild(nodename);

扫描关注微信公众号