国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Java 與 XML 結合使用的心得體會(一)

2019-11-18 12:50:00
字體:
來源:轉載
供稿:網友

  設計圖如下:
  
Java 與 XML 結合使用的心得體會(一)


  xmlParser.class:xml解析器接口。
  
  XMLParserTest.class:xml解析器接口實現子類。
  
  XMLParserFactory.class :xml解析器工廠類。
  
  XMLTool.class :xml工具類接口(對xml文檔進行操作)。
  
  XMLToolTest.class :xml工具類接口實現子類。
  
  XMLToolShow.class :{xml工具類接口實現子類(所有方法的實現都是用XMLTool接口的對應方法實現,功能是通過setForm()靈活更換自己的兄弟類(XMLTool)作為 XML處理工具來獲得更好的效率和完善。}
  
  XMLToolFactory.class :xml工具類工廠類。
  
  還有兩個設計圖中沒有的class:
  
  XmlBuilder.class :根據指定的document.Node生成規范的xml字符串。
  
  XmlOutput.class :根據指定的xml字符串或InputStream生成指定的xml文件。
  
  我在 XMLParserTest.class用到的是xml4j解析器.代碼如下:
  
  package com.ceic.workflow.xml.Parser;
  
  import com.ceic.workflow.xml.XMLParser;
  import com.ibm.xml.parsers.*;
  import java.io.*;
  import org.xml.sax.InputSource;
  /**
   * XML解析器test
   * Title:    XML解析器test
   * Description: XML解析器test
   * Copyright:  Copyright (c) 2003
   * Company:   國電信息中心
   * @author 張治中
   * @version 1.0
   */
  public class XMLParserTest implements XMLParser
  {
  
  public XMLParserTest()
  {
  
  }
  
  /**
  * 解析path位置的xml文件
  * @param path 文件位置
  * @param vali 備用參數
  * @return Object
  * @roseuid 3ECC2FC10043
  */
  public Object parse(String path, boolean vali)
  {
   if(path!=null&&path.length()>0){
   try{
   DOMParser parser = new DOMParser();
   parser.parse(path);
   return parser.getdocument.)
   }catch(Exception e){
     System.out.    +path+"/","+vali+")出錯"+e.getMessage());
    return null;
    }
   }
   return null;
  }
  
  /**
  * 解析xmlString字符串
  * @param xmlString xml字符串
  * @return Object
  * @roseuid 3ECC2FC10043
  */
  
  public Object parseString(String xmlString)
  {
   if(xmlString!=null&&xmlString.length()>0){
   try{
   DOMParser parser = new DOMParser();
   StringReader rd=new StringReader(xmlString);
   InputSource in=new InputSource(rd);
   parser.parse(in);
   return parser.getdocument.)
   }catch(Exception e){
   System.out.println("XMLParserTest.parseString
   (/""+xmlString+"/")出錯"+e.getMessage());
   return null;}
   }
   return null;
  }
  }
  
  
  
  XMLParserFactory.class用普通手動注冊方式。高手可以指點一下好的解決方法。代碼如下:
  
  package com.ceic.workflow.xml;
  
  import com.ceic.workflow.xml.Parser.XMLParserTest;
  import java.util.*;
  /**
   * XML解析器工廠
   */
  public class XMLParserFactory
  {
  private static Hashtable table;
  private static String defaultType;
  
  private XMLParserFactory()
  {
  }
  
  /**
  * 獲得XML解析器
  * @param parserType XML解析器類型
  * @param parserClassName XML解析器類名
  * @return com.ceic.workflow.xml.XMLParser
  * @roseuid 3ECB39E30029
  */
  public static XMLParser getXMLParser
  (String parserType, String parserClassName)
  {
   try{
   if(parserType==nullparserType.length() <=0){
    parserType=defaultType;
   }
   if(table.containsKey(parserType)){
    return ((XMLParser)Class.forName(table.
    get(parserType).toString()).newInstance());
   }
   if(parserClassName!=null&&parserClassName.length() >0){
    try{
    XMLParser temp=((XMLParser)Class.
    forName(parserClassName).newInstance());
    if(parserType!=null&&parserType.length() >0){
     table.put(parserType,parserClassName);
    }
    return temp;
    }catch(Exception ee){
     System.out.println(ee.getMessage() );
     System.out.println("指定的XML解析器不存在");
     return null;
    }
   }
   return null;
   }catch(Exception e){
    System.out.println(e.getMessage() );
    System.out.println("指定的XML解析器不存在");
    return null;
   }
  }
  public static String getDefaultType(){
  return defaultType;
  }
  
  static
  {
   table=new Hashtable();
   table.put("dom","com.ceic.workflow.xml.
   Parser.XMLParserTest");
   defaultType="dom";
  }
  }
  
  
  
  其中getXMLParser(String parserType, String parserClassName)假如是調用已知(已注冊)XMLParser,第2個參數可以是null或""
  
  接口 XMLTool.class是主要的外界操作界面。代碼如下:
  
  package com.ceic.workflow.xml;
  import org.w3c.dom.*;
  
  /**
   * Title:    XML處理工具的 運算和實現部分 的接口
   * Description: XML處理工具的 運算和實現部分 的接口
   * Copyright:  Copyright (c) 2003
   * Company:   國電信息中心
   * @author 張治中
   * @version 1.0
   * XML處理工具的 運算和實現部分 的接口
   */
  public interface XMLTool
  {
  
  /**
  * 通過解析器把指定的xml文件解析生成java對象。
  * 例如org.w3c.dom.document.  
  * @param path - xml文件路徑(包括文件名).
  * @param vali - 備用參數。和XMLParser中的parse
  * (String path,boolean vali)對應。默認為false.
  * @return Object
  * @roseuid 3ECC1EAB0007
  */
  public Object Build(String path, boolean vali);
  /**
  * 通過解析器把指定的xml字符串解析生成java對象。
  * 例如org.w3c.dom.document.  
  * @param xmlString xml字符串
  * @return Object
  * @roseuid 3ECC1EAB0007
  */
  public Object Build(String xmlString);
  /**
  * 設定document.
  * @param docs -document.
  */
  public void setdocument.ource(document.nbspdocs);
  
  /**
  * 設定XML解析器,各個解析器差別較大,
  * 建議在class中固化解析器.
  * @param ParserName - 解析器名稱
  * @param ClassName -
  * 解析器class名,假如是已知解析器(XMLParserFactory中固化的),
  * 可以傳null或空字符串
  * @roseuid 3ECC1EBA0366
  */
  public void setParser(String ParserName,
   String ClassName);
  
  /**
  * 設定指定節點的單個屬性
  * @param NodeName 節點名
  * @param propertyName attribute名,
  * 假如為空則指定NodeName節點的節點值
  * @param value attribute或節點的值
  * @param setall 是否全部的節點都更新
  * @roseuid 3ECB3FA50317
  */
  
  public void setProperty(String NodeName,String
   propertyName,String value,boolean setall);
  /**
  * 獲得指定節點的單個屬性
  * @param NodeName 節點名
  * @param propertyName attribute名,
  * 假如為空,就找出節點的值
  * @return String
  * @roseuid 3ECB3FA50317
  */
  public String getProperty(String NodeName,
   String propertyName);
  /**
  * 獲得

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 海门市| 海宁市| 行唐县| 襄垣县| 遵义县| 平江县| 鸡东县| 香港| 祥云县| 临洮县| 蒙城县| 长沙县| 慈利县| 上虞市| 马鞍山市| 寿宁县| 蒙自县| 华蓥市| 嘉荫县| 上思县| 读书| 黎川县| 黔西县| 云龙县| 安远县| 金坛市| 象州县| 慈利县| 隆安县| 达日县| 阳泉市| 乌审旗| 霍林郭勒市| 甘孜县| 嘉禾县| 望江县| 冀州市| 含山县| 长泰县| 邳州市| 鲁甸县|