采用org.w3c.dom進行XML操作(三)
|
XmlCreater.java
?用于創建XML文件
/******************************************************************** ?* 項目名稱????:rochoc???<p> ?* 包名稱? ????:rochoc.xml.oper?<p> ?* 文件名稱????:XmlCreater???<p> ?* 編寫者 ????:luoc????<p> ?* 編寫日期????:2005-6-22????<p> ?* 程序功能(類)描述?:?創建DOM并生成XML文件????? <p> ?* ?* 程序變更日期???: ?* 變更作者????: ?* 變更說明????: ********************************************************************/ package rochoc.xml.oper;
import java.io.File;
import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult;
import org.apache.log4j.Logger; import org.w3c.dom.Document; import org.w3c.dom.Element;
/** ?* 類名:XmlCreater? <p> ?* 類描述: 創建DOM并生成XML文件<p> ?* 編寫者 :luoc<p> ?* 編寫日期 :2005-6-22<p> ?* 主要public成員變量:<p> ?* 主要public方法:?? <p> ?**/
public class XmlCreater { ??? /** ???? *構造函數說明:?????? <p> ???? *參數說明:@param path? xml文件路徑 <p> ??? **/ ??? public XmlCreater(String path) ??? { ??????? this.path=path; ??????? init(); ??? } ??? ??? /** ??? * 方法名稱:init<p> ??? * 方法功能: 初始化函數?????????? <p> ??? * 參數說明: <p> ??? * 返回:void <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? private void init() ??? { ??????? DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance(); ??????? try ??????? { ??????????? DocumentBuilder builder=factory.newDocumentBuilder(); ??????????? doc=builder.newDocument();//新建DOM ??????? }catch(ParserConfigurationException e) ??????? { ??????????? logger.error("Parse DOM builder error:"+e); ??????? } ??? } ??? ??? /** ??? * 方法名稱:createRootElement<p> ??? * 方法功能:創建根結點,并返回??????????? <p> ??? * 參數說明:@param rootTagName <p> ??? * 返回:Element <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? public Element createRootElement(String rootTagName) ??? {???? ??????? if(doc.getDocumentElement()==null) ??????? { ??????????? logger.debug("create root element '"+rootTagName+"' success."); ??????????? Element root=doc.createElement(rootTagName); ??????????? doc.appendChild(root); ??????????? return root; ??????? } ??????? logger.warn("this dom's root element is exist,create fail."); ??????? return doc.getDocumentElement(); ??? } ??? ??? /** ??? * 方法名稱:createElement<p> ??? * 方法功能:在parent結點下增加子結點tagName<p> ??? * 參數說明:@param parent ??? * 參數說明:@param tagName <p> ??? * 返回:Element <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? public Element createElement(Element parent,String tagName) ??? { ??????? Document doc=parent.getOwnerDocument(); ??????? Element child=doc.createElement(tagName); ??????? parent.appendChild(child);??????? ??????? return child; ??? } ??? ??? /** ??? * 方法名稱:createElement<p> ??? * 方法功能:在parent結點下增加值為value的子結點tabName<p> ??? * 參數說明:@param parent ??? * 參數說明:@param tagName ??? * 參數說明:@param value <p> ??? * 返回:Element <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? public Element createElement(Element parent,String tagName,String value) ??? { ??????? Document doc=parent.getOwnerDocument(); ??????? Element child=doc.createElement(tagName); ??????? XmlOper.setElementValue(child,value); ??????? parent.appendChild(child); ??????? return child; ??? } ??? ??? /** ??? * 方法名稱:createAttribute<p> ??? * 方法功能:在parent結點下增加屬性 <p> ??? * 參數說明:@param parent ??? * 參數說明:@param attrName 屬性名 ??? * 參數說明:@param attrValue 屬性值<p> ??? * 返回:void <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? public void createAttribute(Element parent,String attrName,String attrValue) ??? { ??????? XmlOper.setElementAttr(parent,attrName,attrValue);??????? ??? } ??? ??? /** ??? * 方法名稱:buildXmlFile<p> ??? * 方法功能:根據DOM生成XML文件<p> ??? * 參數說明: <p> ??? * 返回:void <p> ??? * 作者:luoc ??? * 日期:2005-6-22 ??? **/ ??? public void buildXmlFile() ??? { ??????? TransformerFactory tfactory=TransformerFactory.newInstance(); ??????? try ??????? { ??????????? Transformer transformer=tfactory.newTransformer(); ??????????? DOMSource source=new DOMSource(doc); ??????????? logger.debug("New DOMSource success."); ??????????? StreamResult result=new StreamResult(new File(path)); ??????????? logger.debug("New StreamResult success."); ??????????? transformer.setOutputProperty("encoding","GBK"); ??????????? transformer.transform(source,result); ??????????? logger.debug("Build XML File '"+path+"' success."); ??????? }catch(TransformerConfigurationException e) ??????? { ??????????? logger.error("Create Transformer error:"+e); ??????? }catch(TransformerException e) ??????? { ??????????? logger.error("Transformer XML file error:"+e); ??????? } ??? } ??? ??? /** ???? * @return 返回 doc。 ???? */ ??? public Document getDoc() ??? { ??????? return doc; ??? } ??? /** ???? * @param doc 要設置的 doc。 ???? */ ??? public void setDoc(Document doc) ??? { ??????? this.doc = doc; ??? } ??? /** ???? * @return 返回 path。 ???? */ ??? public String getPath() ??? { ??????? return path; ??? } ??? /** ???? * @param path 要設置的 path。 ???? */ ??? public void setPath(String path) ??? { ??????? this.path = path; ??? } ??? /*全局變量*/ ??? private Logger logger = Logger.getLogger(getClass().getName()); ??? private Document doc=null;//新創建的DOM ??? private String path=null;//生成的XML文件絕對路徑 }
|