当前位置导航:炫浪网>>网络学院>>编程开发>>JAVA教程>>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);
相关内容
赞助商链接