Feng.Li's Java See

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

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

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

          XmlOper.java

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

          ?/********************************************************************
          ?* 項目名稱????: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文件進行讀寫操作,均為靜態函數 <p>
          ?* 編寫者 :luoc<p>
          ?* 編寫日期 :2005-6-22<p>
          ?* 主要public成員變量:<p>
          ?* 主要public方法:?? <p>
          ?**/

          public class XmlOper
          {
          ??? /**
          ???? *構造函數說明:?????? <p>
          ???? *參數說明:?? <p>
          ??? **/
          ??? private XmlOper()
          ??? {???????
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getNodeList<p>
          ??? * 方法功能:獲取父結點parent的所有子結點<p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@return <p>
          ??? * 返回:NodeList <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static NodeList getNodeList(Element parent)
          ??? {
          ??????? return parent.getChildNodes();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementsByName<p>
          ??? * 方法功能:在父結點中查詢指定名稱的結點集??????????? <p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@param name
          ??? * 參數說明:@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>
          ??? * 參數說明:@param element
          ??? * 參數說明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementName(Element element)
          ??? {
          ??????? return element.getNodeName();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementValue<p>
          ??? * 方法功能:獲取指定Element的值<p>
          ??? * 參數說明:@param element
          ??? * 參數說明:@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>
          ??? * 參數說明:@param element
          ??? * 參數說明:@param attr
          ??? * 參數說明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementAttr(Element element,String attr)
          ??? {
          ??????? return element.getAttribute(attr);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:setElementValue<p>
          ??? * 方法功能:設置指定Element的值??????????? <p>
          ??? * 參數說明:@param element
          ??? * 參數說明:@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>
          ??? * 方法功能:設置結點Element的屬性<p>
          ??? * 參數說明:@param element
          ??? * 參數說明:@param attr
          ??? * 參數說明:@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下增加結點child<p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@param child <p>
          ??? * 返回:void <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static void addElement(Element parent,Element child)
          ??? {
          ??????? parent.appendChild(child);
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:addElement<p>
          ??? * 方法功能:在parent下增加字符串tagName生成的結點<p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@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結點,且值為text<p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@param tagName
          ??? * 參數說明:@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>
          ??? * 方法功能:將父結點parent下的名稱為tagName的結點移除<p>
          ??? * 參數說明:@param parent
          ??? * 參數說明:@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 小鋒 閱讀(1021) 評論(0)  編輯  收藏 所屬分類: J2EE

          主站蜘蛛池模板: 绥芬河市| 清水河县| 大田县| 宽甸| 乾安县| 文山县| 乐东| 剑川县| 南充市| 彭山县| 光泽县| 北宁市| 双桥区| 广德县| 休宁县| 嵩明县| 婺源县| 玉屏| 平原县| 广河县| 霍山县| 龙里县| 曲沃县| 原阳县| 开平市| 格尔木市| 滕州市| 玛曲县| 囊谦县| 宁河县| 南皮县| 万载县| 宜丰县| 东莞市| 石门县| 阳信县| 金山区| 张家口市| 英超| 渝中区| 泗水县|