Feng.Li's Java See

          抓緊時間,大步向前。
          隨筆 - 95, 文章 - 4, 評論 - 58, 引用 - 0
          數據加載中……

          采用org.w3c.dom進行XML操作(三)

          采用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文件絕對路徑
          }

          posted on 2006-12-05 23:45 小鋒 閱讀(923) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 北安市| 贵德县| 南平市| 湘西| 沁阳市| 织金县| 喀什市| 行唐县| 利津县| 宁国市| 虎林市| 兰西县| 鹤庆县| 容城县| 奇台县| 长沙县| 南京市| 凤冈县| 泰宁县| 资中县| 如东县| 大新县| 金华市| 岫岩| 唐河县| 正定县| 苍南县| 曲麻莱县| 潜山县| 佛坪县| 页游| 兴业县| 当雄县| 康乐县| 碌曲县| 乐山市| 都昌县| 迁西县| 深水埗区| 阜平县| 杨浦区|