捕風(fēng)之巢

          統(tǒng)計(jì)

          留言簿(3)

          java友情鏈接

          閱讀排行榜

          評(píng)論排行榜

          采用org.w3c.dom進(jìn)行XML操作(二)(轉(zhuǎn)載)

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

          XmlOper.java

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

          ?/********************************************************************
          ?* 項(xiàng)目名稱????:rochoc???<p>
          ?* 包名稱? ????:rochoc.xml.oper?<p>
          ?* 文件名稱????:XmlOper???<p>
          ?* 編寫者 ????:luoc????<p>
          ?* 編寫日期????:2005-6-22????<p>
          ?* 程序功能(類)描述?:?對(duì)XML進(jìn)行讀寫操作????? <p>
          ?*
          ?* 程序變更日期???:
          ?* 變更作者????:
          ?* 變更說(shuō)明????:
          ********************************************************************/
          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>
          ?* 類描述:對(duì)XML文件進(jìn)行讀寫操作,均為靜態(tài)函數(shù) <p>
          ?* 編寫者 :luoc<p>
          ?* 編寫日期 :2005-6-22<p>
          ?* 主要public成員變量:<p>
          ?* 主要public方法:?? <p>
          ?**/

          public class XmlOper
          {
          ??? /**
          ???? *構(gòu)造函數(shù)說(shuō)明:?????? <p>
          ???? *參數(shù)說(shuō)明:?? <p>
          ??? **/
          ??? private XmlOper()
          ??? {???????
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getNodeList<p>
          ??? * 方法功能:獲取父結(jié)點(diǎn)parent的所有子結(jié)點(diǎn)<p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@return <p>
          ??? * 返回:NodeList <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static NodeList getNodeList(Element parent)
          ??? {
          ??????? return parent.getChildNodes();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementsByName<p>
          ??? * 方法功能:在父結(jié)點(diǎn)中查詢指定名稱的結(jié)點(diǎn)集??????????? <p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@param name
          ??? * 參數(shù)說(shuō)明:@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ù)說(shuō)明:@param element
          ??? * 參數(shù)說(shuō)明:@return <p>
          ??? * 返回:String <p>
          ??? * 作者:luoc
          ??? * 日期:2005-6-22
          ??? **/
          ??? public static String getElementName(Element element)
          ??? {
          ??????? return element.getNodeName();
          ??? }
          ???
          ??? /**
          ??? * 方法名稱:getElementValue<p>
          ??? * 方法功能:獲取指定Element的值<p>
          ??? * 參數(shù)說(shuō)明:@param element
          ??? * 參數(shù)說(shuō)明:@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)//是一個(gè)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ù)說(shuō)明:@param element
          ??? * 參數(shù)說(shuō)明:@param attr
          ??? * 參數(shù)說(shuō)明:@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ù)說(shuō)明:@param element
          ??? * 參數(shù)說(shuō)明:@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)//是一個(gè)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é)點(diǎn)Element的屬性<p>
          ??? * 參數(shù)說(shuō)明:@param element
          ??? * 參數(shù)說(shuō)明:@param attr
          ??? * 參數(shù)說(shuō)明:@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é)點(diǎn)child<p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@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é)點(diǎn)<p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@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é)點(diǎn),且值為text<p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@param tagName
          ??? * 參數(shù)說(shuō)明:@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é)點(diǎn)parent下的名稱為tagName的結(jié)點(diǎn)移除<p>
          ??? * 參數(shù)說(shuō)明:@param parent
          ??? * 參數(shù)說(shuō)明:@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 捕風(fēng) 閱讀(657) 評(píng)論(1)  編輯  收藏 所屬分類: xml應(yīng)用

          評(píng)論

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

          沒(méi)用的東本  回復(fù)  更多評(píng)論   

          主站蜘蛛池模板: 和静县| 仁布县| 仁寿县| 淮南市| 兴文县| 德化县| 彭泽县| 长沙市| 澎湖县| 日土县| 玉龙| 常德市| 成都市| 社旗县| 河津市| 西城区| 遵义县| 海安县| 商河县| 昌黎县| 济南市| 灵武市| 湖北省| 大同县| 海阳市| 雷州市| 洛隆县| 清河县| 文成县| 东明县| 石棉县| 凯里市| 廉江市| 琼海市| 应城市| 永州市| 潞城市| 华亭县| 灵宝市| 马鞍山市| 徐汇区|