Feng.Li's Java See

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

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

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

          XmlOper.java

          ?用于操作XML文件,包括查找、新增、刪除、修改結(jié)點

          ?/********************************************************************
          ?* 項目名稱????:rochoc???<p>
          ?* 包名稱? ????:rochoc.xml.oper?<p>
          ?* 文件名稱????:XmlOper???<p>
          ?* 編寫者 ????:luoc????<p>
          ?* 編寫日期????:2005-6-22????<p>
          ?* 程序功能(類)描述?:?對XML進行讀寫操作????? <p>
          ?*
          ?* 程序變更日期???:
          ?* 變更作者????:
          ?* 變更說明????:
          ********************************************************************/
          package rochoc.xml.oper;

          import java.util.ArrayList;

          import org.apache.log4j.Logger;
          import org.w3c.dom.Document;
          import org.w3c.dom.Element;
          import org.w3c.dom.Node;
          import org.w3c.dom.NodeList;

          /**
          ?* 類名:XmlOper? <p>
          ?* 類描述:對XML文件進行讀寫操作,均為靜態(tài)函數(shù) <p>
          ?* 編寫者 :luoc<p>
          ?* 編寫日期 :2005-6-22<p>
          ?* 主要public成員變量:<p>
          ?* 主要public方法:?? <p>
          ?**/

          public class XmlOper
          {
          ??? /**
          ???? *構(gòu)造函數(shù)說明:?????? <p>
          ???? *參數(shù)說明:?? <p>
          ??? **/
          ??? private XmlOper()
          ??? {???????
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getNodeList<p>
          ??? * 方法功能:獲取父結(jié)點parent的所有子結(jié)點<p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@return <p>
          ??? * 返回:NodeList <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static NodeList getNodeList(Element parent)
          ??? {
          ??????? return parent.getChildNodes();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementsByName<p>
          ??? * 方法功能:在父結(jié)點中查詢指定名稱的結(jié)點集??????????? <p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@param name
          ??? * 參數(shù)說明:@return <p>
          ??? * 返回:Element[] <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static Element [] getElementsByName(Element parent,String name)
          ??? {
          ??????? ArrayList resList=new ArrayList();
          ??????? NodeList nl=getNodeList(parent);
          ??????? for(int i=0;i<nl.getLength();i++)
          ??????? {
          ??????????? Node nd=nl.item(i);
          ??????????? if(nd.getNodeName().equals(name))
          ??????????? {
          ??????????????? resList.add(nd);
          ??????????? }
          ??????? }
          ??????? Element [] res=new Element [resList.size()];
          ??????? for(int i=0;i<resList.size();i++)
          ??????? {
          ??????????? res[0]=(Element)resList.get(i);
          ??????? }???????
          ??????? logger.debug(parent.getNodeName()+"'s children of "+name+
          ??????????????? "'s num:"+res.length);
          ??????? return res;
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementName<p>
          ??? * 方法功能:獲取指定Element的名稱??????????? <p>
          ??? * 參數(shù)說明:@param element
          ??? * 參數(shù)說明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementName(Element element)
          ??? {
          ??????? return element.getNodeName();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementValue<p>
          ??? * 方法功能:獲取指定Element的值<p>
          ??? * 參數(shù)說明:@param element
          ??? * 參數(shù)說明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementValue(Element element)
          ??? {
          ??????? NodeList nl=element.getChildNodes();
          ??????? for(int i=0;i<nl.getLength();i++)
          ??????? {
          ??????????? if(nl.item(i).getNodeType()==Node.TEXT_NODE)//是一個Text Node
          ??????????? {???????????
          ??????????????? logger.debug(element.getNodeName()+" has a Text Node.");
          ??????????????? return element.getFirstChild().getNodeValue();
          ??????????? }
          ??????? }??
          ??????? logger.error(element.getNodeName()+" hasn't a Text Node.");
          ??????? return null;
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementAttr<p>
          ??? * 方法功能:獲取指定Element的屬性attr的值??????????? <p>
          ??? * 參數(shù)說明:@param element
          ??? * 參數(shù)說明:@param attr
          ??? * 參數(shù)說明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementAttr(Element element,String attr)
          ??? {
          ??????? return element.getAttribute(attr);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:setElementValue<p>
          ??? * 方法功能:設(shè)置指定Element的值??????????? <p>
          ??? * 參數(shù)說明:@param element
          ??? * 參數(shù)說明:@param val <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void setElementValue(Element element,String val)
          ??? {
          ??????? Node node=element.getOwnerDocument().createTextNode(val);
          ??????? NodeList nl=element.getChildNodes();
          ??????? for(int i=0;i<nl.getLength();i++)
          ??????? {
          ??????????? Node nd=nl.item(i);
          ??????????? if(nd.getNodeType()==Node.TEXT_NODE)//是一個Text Node
          ??????????? {???????????
          ????????????????? nd.setNodeValue(val);
          ????????????????? logger.debug("modify "+element.getNodeName()+"'s node value succe.");
          ????????????????? return;
          ??????????? }
          ??????? }??
          ??????? logger.debug("new "+element.getNodeName()+"'s node value succe.");
          ??????? element.appendChild(node);???????
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:setElementAttr<p>
          ??? * 方法功能:設(shè)置結(jié)點Element的屬性<p>
          ??? * 參數(shù)說明:@param element
          ??? * 參數(shù)說明:@param attr
          ??? * 參數(shù)說明:@param attrVal <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void setElementAttr(Element element,
          ??????????? String attr,String attrVal)
          ??? {
          ??????? element.setAttribute(attr,attrVal);
          ??? }
          ???
          ???
          ??? /**
          ??? * 方法名稱:addElement<p>
          ??? * 方法功能:在parent下增加結(jié)點child<p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@param child <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void addElement(Element parent,Element child)
          ??? {
          ??????? parent.appendChild(child);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:addElement<p>
          ??? * 方法功能:在parent下增加字符串tagName生成的結(jié)點<p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@param tagName <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void addElement(Element parent,String tagName)
          ??? {???????
          ??????? Document doc=parent.getOwnerDocument();
          ??????? Element child=doc.createElement(tagName);
          ??????? parent.appendChild(child);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:addElement<p>
          ??? * 方法功能:在parent下增加tagName的Text結(jié)點,且值為text<p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@param tagName
          ??? * 參數(shù)說明:@param text <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void addElement(Element parent,String tagName,String text)
          ??? {
          ??????? Document doc=parent.getOwnerDocument();
          ??????? Element child=doc.createElement(tagName);
          ??????? setElementValue(child,text);
          ??????? parent.appendChild(child);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:removeElement<p>
          ??? * 方法功能:將父結(jié)點parent下的名稱為tagName的結(jié)點移除<p>
          ??? * 參數(shù)說明:@param parent
          ??? * 參數(shù)說明:@param tagName <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void removeElement(Element parent,String tagName)
          ??? {
          ??????? logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" begin...");
          ??????? NodeList nl=parent.getChildNodes();
          ??????? for(int i=0;i<nl.getLength();i++)
          ??????? {
          ??????????? Node nd=nl.item(i);
          ??????????? if(nd.getNodeName().equals(tagName))
          ??????????? {
          ??????????????? parent.removeChild(nd);
          ??????????????? logger.debug("remove child '"+nd+"' success.");
          ??????????? }
          ??????? }
          ??????? logger.debug("remove "+parent.getNodeName()+"'s children by tagName "+tagName+" end.");
          ??? }
          ???
          ???
          ??? /*全局變量*/???
          ??? static Logger logger=Logger.getLogger("XmlOper");
          }

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

          主站蜘蛛池模板: 图们市| 木兰县| 呈贡县| 藁城市| 霸州市| 城固县| 石城县| 琼结县| 余干县| 光泽县| 舟曲县| 乌兰浩特市| 天长市| 张掖市| 山东| 贵南县| 红河县| 固镇县| 万年县| 文水县| 抚宁县| 铁岭县| 宁强县| 会昌县| 亳州市| 军事| 湄潭县| 治县。| 长丰县| 临猗县| 临泽县| 嘉定区| 曲麻莱县| 靖安县| 潼南县| 清河县| 寿光市| 随州市| 哈密市| 新源县| 错那县|