龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

Java 与 XML 结合使用的心得体会(二)

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
XMLToolTest.class实现了对xml文档的操作。包括建立一个新xml document.档结构及内容或从指定xml文件或的document.构和内容,output到指定的xml文件(或更新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="<?xml version="1.0" ?>";
    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);
  
精彩图集

赞助商链接