日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Strus2第一次课:dom4j操作xml

發(fā)布時間:2025/3/15 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Strus2第一次课:dom4j操作xml 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

先從底層的xml操作技術(shù)記錄:

 當(dāng)我們新建一個項目,什么架包都沒加入的時候,java提供了 org.w3c.dom給我們操作xml里面的元素

  import org.w3c.dom.Document;

  import org.w3c.dom.Element;

  import org.w3c.dom.Node;

  import org.w3c.dom.NodeList;

  并且提供了?javax.xml來讀取xml、對xml進行增刪改操作

?

  如何讀取一個xml文件:

  導(dǎo)包:

  • javax.xml.parsers.DocumentBuilderFactory;//文本建造工廠
  • javax.xml.parsers.DocumentBuilder;   ? ?//文本建造者
  • org.w3c.dom.Document; ? ? ? ? ? ? ? ? ? ? ? ? ? //文本  
  •   

      DocumentBuilderFactory factory=null;

      DocumentBuilder builder=null;

      Document doc=null;

      

    try {factory=DocumentBuilderFactory.newInstance();builder=factory.newDocumentBuilder();doc=builder.parse("練習(xí)/project1/Student2.xml");} catch (Exception e) {e.printStackTrace();}

    上面的代碼:從工廠new一個文本建造者,由這個建造者去拿xml文件,n(*≧▽≦*)n太面向?qū)ο罅?#xff01;


    ?

    獲取xml里面的節(jié)點,以及節(jié)點內(nèi)的元素

    Element對象提供一系列的方法,可以對節(jié)點執(zhí)行增、刪、改、查:

    factory=DocumentBuilderFactory.newInstance();builder=factory.newDocumentBuilder();doc=builder.parse("練習(xí)/Student.xml");//element=build("練習(xí)/project1/Student2.xml").getDocumentElement();
           Element element=doc.getDocumentElement();
    System.out.println("-------"+element.getTagName()+"-------");NodeList list=element.getElementsByTagName("student");for(int i=0;i<list.getLength();i++){for(int j=0;j<list.item(i).getChildNodes().getLength();j++){System.out.println(((Element)list.item(i).getChildNodes().item(j)).getNodeName()+":"+((Element)list.item(i).getChildNodes().item(j)).getTextContent());}System.out.println("--------------");}

    上面的代碼打印xml里面的節(jié)點和節(jié)點內(nèi)的文本!

    element接口里面的部分方法:

    • element.getAttribute(""); ? ? ? ? ? ? ? ? ??//獲取節(jié)點屬性的
    • element.getElementsByTagName(""); ?//根據(jù)節(jié)點名或者節(jié)點列表 NodeList
    • element.getChildNodes()、element.getFirstNode()、element.getNextSibling()、element.getLastNode() ? ? 見名知意:
    • element.getTagName()..... ? ? ? ? ? ? ? ? //獲取節(jié)點名字

    方法很多,不一一介紹,上面的代碼中有體現(xiàn)!

    ?

    ?


    需要注意的是:以上方法都是在內(nèi)存中執(zhí)行的,也就是在本地拿到東西后放在內(nèi)存里面,下面我們來了解增刪改時,對于多出來的操作就不覺得奇怪的

    新增節(jié)點:

    新增節(jié)點使用document.createElement("")方法:

    ?

    //在內(nèi)存中對xml新增節(jié)點:僅是在內(nèi)存中element=build("練習(xí)/project1/Student2.xml").getDocumentElement();Element creELe=doc.createElement("student");Element stuno=doc.createElement("stuno");Element stuname=doc.createElement("stuname");stuname.setTextContent("大頭");Element stuage=doc.createElement("stuage");stuage.setTextContent("20");Element stuinfo=doc.createElement("stuinfo");stuinfo.setTextContent("我的特點就是頭特別大!");stuno.setAttribute("id","2");creELe.appendChild(stuno);creELe.appendChild(stuname);creELe.appendChild(stuage);creELe.appendChild(stuinfo);element.appendChild(creELe);

    ?

    以上操作皆是內(nèi)存里面的操作,要將節(jié)點保存還需要持久化:

    • import javax.xml.transform.Result;
      import javax.xml.transform.Source;
      import javax.xml.transform.Transformer;
      import javax.xml.transform.TransformerFactory;

    TransformerFactory tfactory=TransformerFactory.newInstance();Transformer trans=tfactory.newTransformer();//源 位置Source source=new DOMSource(doc);Result result=new StreamResult(path);trans.transform(source, result);

    n(*≧▽≦*)n也是面向?qū)ο?#xff01;

    友情提示:

    在添加節(jié)點的時候大家一定注意節(jié)點之間的關(guān)系,在持久化操作的時候,source對象里面應(yīng)該設(shè)置document對象,別設(shè)置成element對象

    現(xiàn)在是初步學(xué)習(xí),沒遇到什么錯,我相信在后面的學(xué)習(xí)中會遇到更多問題,到時候補充

    ?

      

    刪除、修改:

      ?與新增操作雷同,最后一定要"trans.transform(source, result)"

      不然你之前的代碼就都白費了!

     

    下面是重頭戲dom4j:

    ?


    ?

      dom4j是一個Java的XML API,類似于jdom,用來讀寫XML文件的。dom4j是一個十分優(yōu)秀的JavaXML API,具有性能優(yōu)異、功能強大和極其易使用的特點,同時它也是一個開放源代碼的軟件,可以在SourceForge上找到它。在IBM developerWorks上面還可以找到一篇文章,對主流的Java XML API進行的性能、功能和易用性的評測,所以可以知道dom4j無論在哪個方面都是非常出色的。如今可以看到越來越多的Java軟件都在使用dom4j來讀寫XML,特別值得一提的是連Sun的JAXM也在用dom4j。這已經(jīng)是必須使用的jar包, Hibernate也用它來讀寫配置文件。

      

      友情提示:

      了解了底層的xml操作,dom4j操作就直接上代碼,原理其實一樣的。里面的方法名會有些區(qū)別,看看幫助文檔都可以解決

      需要下載dom4j架包:

        官網(wǎng)地址:http://sourceforge.net/projects/dom4j/files/

      導(dǎo)入:import org.dom4j.*;

      

    ?

    •   
    public List sele(String path) throws Exception{Element element=CreateUtil.reElement(path);System.out.println("總共有:"+element.nodeCount()+"個元素");list=new ArrayList();//map=new HashMap();return forhelper(element);} /*** 循環(huán)遍歷并且返回list* @param ele* @return*/public List forhelper(Element ele){for(Iterator ite2=ele.elementIterator();ite2.hasNext();){Element ele2=(Element)ite2.next();//System.out.println(ele2.getName()+":"+ele2.getText());String word=ele2.getName()+":"+ele2.getText();list.add(word);if(ele2.nodeCount()>0){forhelper(ele2);}}return list;}

    ?

    ?

     

    /*** 保存指定的document對象,指定將要存儲的位置,gotopath=null時默認(rèn)存儲在打開的位置* @param path* @param dom* @param goToPath* @return* @throws Exception*/public boolean save(String goToPath) throws Exception{//創(chuàng)建documentDocument dom=DocumentHelper.createDocument();//創(chuàng)建根節(jié)點 Element eleRoot=dom.addElement("Student");Element ele=eleRoot.addElement("stuno").addText("1");Element ele2=eleRoot.addElement("stuname").addText("李四");last(dom, goToPath);return false;}

     

    /*** 改變文本內(nèi)容* @param path* @param goToPath* @return* @throws Exception*/public boolean reEle(String path,String goToPath) throws Exception{Document dom=CreateUtil.redom(path);Element element= dom.getRootElement();System.out.println(element.getName());Element ele=element.element("stuname");System.out.println(ele.asXML());ele.setText("改變了"); last(dom, goToPath);return false;}

     

    /*** 刪除制定的節(jié)點,或者節(jié)點內(nèi)元素* @param path* @return* @throws Exception*/public boolean del(String path,String elename) throws Exception{Document dom=CreateUtil.redom(path);Element element= dom.getRootElement();System.out.println(element.getName());Element ele=element.element(elename);if(ele!=null){System.out.println(ele.asXML());System.out.println(element.remove(ele)); last(dom, path);}else{System.out.println("沒有你要查找的節(jié)點!");}return false;}
    • 持久化方法

     

    /*** 從內(nèi)存讀取到本地* @param dom* @param path*/public void last(Document dom,String path){XMLWriter xmlw=null;try {OutputFormat output=OutputFormat.createPrettyPrint();output.setEncoding("utf-8");xmlw=new XMLWriter(new FileOutputStream(new File(path)), output);xmlw.write(dom);} catch (Exception e) {e.printStackTrace();}finally{if(xmlw!=null){try {xmlw.close();System.out.println("操作成功!");} catch (IOException e) {// TODO Auto-generated catch block e.printStackTrace();}}}}

    ?

    注意::

      dom4j在持久化操作時會有亂碼的現(xiàn)象!

      小竅門:

      醬紫持久化就不會出現(xiàn)亂碼了!

    OutputFormat output=OutputFormat.createPrettyPrint();output.setEncoding("utf-8");xmlw=new XMLWriter(new FileOutputStream(new File(path)), output);
           xmlw.write(dom); ?

      

      代碼不一定合理,請不要照搬!

     

    轉(zhuǎn)載于:https://www.cnblogs.com/gcs1995/p/4204578.html

    總結(jié)

    以上是生活随笔為你收集整理的Strus2第一次课:dom4j操作xml的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 成年人黄色免费视频 | 国产精品污www一区二区三区 | 澳门久久久 | 粉嫩一区二区三区 | 日韩久操 | 亚洲图片欧美另类 | 国产一区视频免费观看 | 日本少妇一区二区三区 | 爱情岛论坛自拍亚洲品质极速最新章 | 亚洲欧美视频一区二区 | 国产美女毛片 | 久久精品欧美一区二区三区不卡 | 在线天堂6 | 在线观看国产一区 | 日韩在线激情视频 | 性欧美欧美巨大69 | 艳妇臀荡乳欲伦交换电影 | 激情婷婷六月 | 韩国在线不卡 | 免费看欧美一级特黄a大片 国产免费的av | 国产精品老牛影视 | 99久久久无码国产精品 | 波多野吉衣中文字幕 | 在线免费黄色片 | 白白色免费视频 | 亚洲av无码一区二区乱子伦 | v888av| 性视频免费 | 四虎影城库 | 第四色男人天堂 | 欧美成人秋霞久久aa片 | 99久久伊人 | 日韩欧美中文字幕在线播放 | 日韩av大片| 国产剧情一区二区三区 | 台湾极品xxx少妇 | 色爱成人综合 | 日韩电影中文字幕 | 图书馆的女友动漫在线观看 | 色爽 av| 国产一二三四五区 | 人人看人人做 | 91嫩草影视 | 图片区 小说区 区 亚洲五月 | 青青操免费 | 污污内射久久一区二区欧美日韩 | 中国女人内谢69xxxx免费视频 | 黑人巨大猛交丰满少妇 | 亚洲天堂精品视频 | 免费观看黄色网页 | 麻豆精品在线播放 | 国产男男gay网站 | 免费av一区二区 | 男人天堂aaa | 国产麻豆免费视频 | 成人午夜视频在线观看 | 综合色吧 | 欧美少妇视频 | 樱花视频在线观看 | 成人欧美一区二区三区小说 | 欧美日韩v | 四虎精品视频 | 国产免费午夜 | 国产不卡在线观看 | 亚洲综合免费视频 | 欧美成人午夜免费视在线看片 | 久久av免费 | 国语对白做受69按摩 | 男人添女人囗交视频 | 中文字幕7 | 99国产视频在线 | 中文字幕 视频一区 | 欧美色图亚洲色 | 99久久久久成人国产免费 | 免费国产羞羞网站视频 | 91操视频 | 强伦人妻一区二区三区视频18 | wwwyoujizz日本 | 色老板av| 国产一区观看 | 蜜桃精品视频在线观看 | 欧美午夜在线 | 国产情侣久久久久aⅴ免费 caoporn成人 | 朝桐光一区二区三区 | 夜夜撸av| 国产二区精品 | 4虎最新网址 | 91射| 四虎免费久久 | 亚洲天堂自拍 | 国产一线av | 女人18毛片水真多 | 丁香花婷婷 | 男女在楼梯上高潮做啪啪 | 中国国语农村大片 | 国产在线视频一区二区三区 | 色优久久| 欲乱美女| www.蜜桃av |