最近一段時間有空,啃了啃xml和與它相關的東東,做了一些實踐性的代碼和功能,做完后自己都不怎么滿足,不過實踐過程到是一個新手的典型例子。所以拿出來讓高手指點指點。^_^
由于一直做b/s結構的東西,在加上一個做項目中的遺留問題(tree型角色和tree型權限之間的交互),所以想做一個xml的解決方案。
當然這個問題的解決必須有對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);
新聞熱點
疑難解答