捕風之巢

          統計

          留言簿(3)

          java友情鏈接

          閱讀排行榜

          評論排行榜

          采用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 2007-03-22 14:56 捕風 閱讀(657) 評論(1)  編輯  收藏 所屬分類: xml應用

          評論

          # re: 采用org.w3c.dom進行XML操作(二)(轉載) 2009-04-14 15:20 -

          沒用的東本  回復  更多評論   

          主站蜘蛛池模板: 平乐县| 中江县| 松原市| 黑水县| 平度市| 沙坪坝区| 调兵山市| 城市| 定远县| 河北区| 阿克陶县| 永靖县| 墨玉县| 崇礼县| 呼图壁县| 西宁市| 湖北省| 佛山市| 安平县| 汉阴县| 巢湖市| 邢台县| 随州市| 灵石县| 吉首市| 宣武区| 恩平市| 集贤县| 澄江县| 天津市| 泰来县| 高安市| 美姑县| 安西县| 顺义区| 阿拉尔市| 杭锦旗| 宜昌市| 微山县| 枞阳县| 苏尼特右旗|