posts - 21,  comments - 6,  trackbacks - 0
          ??1 package ?dom;
          ??2
          ??3 import ?java.io.File;
          ??4 import ?java.io.FileWriter;
          ??5 import ?java.util.Iterator;
          ??6 import ?java.util.List;
          ??7
          ??8 import ?org.dom4j.Attribute;
          ??9 import ?org.dom4j.Document;
          ?10 import ?org.dom4j.DocumentHelper;
          ?11 import ?org.dom4j.Element;
          ?12 import ?org.dom4j.io.OutputFormat;
          ?13 import ?org.dom4j.io.SAXReader;
          ?14 import ?org.dom4j.io.XMLWriter;
          ?15
          ?16 /**
          ?17 ?*? @author ?~@_@
          ?18 ? */

          ?19 public ? class ?SimpleDom4j? {
          ?20
          ?21 ???? /**
          ?22 ?????*?建立一個XML文檔,文檔名由輸入屬性決定
          ?23 ?????*? @param ?filename?需建立的文件名?
          ?24 ?????*? @return ?返回操作結果,?0表失敗,?1表成功????
          ?25 ????? */

          ?26 ???? public ? int ?createXMLFile(String?filename)? {
          ?27 ???????? /** ?返回操作結果,?0表失敗,?1表成功? */
          ?28 ???????? int ?returnValue? = ? 0 ;
          ?29 ???????? /** ?建立document對象? */
          ?30 ????????Document?document? = ?DocumentHelper.createDocument();
          ?31 ???????? /** ?建立XML文檔的根books? */
          ?32 ????????Element?booksElement? = ?document.addElement( " books " );
          ?33 ???????? /** ?加入一行注釋? */
          ?34 ????????booksElement.addComment( " This?is?a?test?for?dom4j,?holen,?2004.9.11 " );
          ?35 ???????? /** ?加入第一個book節點? */
          ?36 ????????Element?bookElement? = ?booksElement.addElement( " book " );
          ?37 ???????? /** ?加入show屬性內容? */
          ?38 ????????bookElement.addAttribute( " show " ,? " yes " );
          ?39 ???????? /** ?加入title節點? */
          ?40 ????????Element?titleElement? = ?bookElement.addElement( " title " );
          ?41 ???????? /** ?為title設置內容? */
          ?42 ????????titleElement.setText( " Dom4j?Tutorials " );
          ?43 ???????? /** ?類似的完成后兩個book? */
          ?44 ????????bookElement? = ?booksElement.addElement( " book " );
          ?45 ????????bookElement.addAttribute( " show " ,? " yes " );
          ?46 ????????titleElement? = ?bookElement.addElement( " title " );
          ?47 ????????titleElement.setText( " Lucene?Studing " );
          ?48 ????????bookElement? = ?booksElement.addElement( " book " );
          ?49 ????????bookElement.addAttribute( " show " ,? " no " );
          ?50 ????????titleElement? = ?bookElement.addElement( " title " );
          ?51 ????????titleElement.setText( " Lucene?in?Action " );
          ?52 ???????? /** ?加入owner節點? */
          ?53 ????????Element?ownerElement? = ?booksElement.addElement( " owner " );
          ?54 ????????ownerElement.setText( " O'Reilly " );
          ?55 ???????? try ? {
          ?56 ???????????? /** ?將document中的內容寫入文件中? */
          ?57 ????????????XMLWriter?writer? = ? new ?XMLWriter( new ?FileWriter( new ?File(filename)));
          ?58 ????????????writer.write(document);
          ?59 ????????????writer.close();
          ?60 ???????????? /** ?執行成功,需返回1? */
          ?61 ????????????returnValue? = ? 1 ;
          ?62 ????????}
          ? catch ?(Exception?ex)? {
          ?63 ????????????ex.printStackTrace();
          ?64 ????????}

          ?65 ???????? return ?returnValue;
          ?66 ????}

          ?67
          ?68 ???? /**
          ?69 ?????*??修改XML文件中內容,并另存為一個新文件??
          ?70 ?????*??重點掌握dom4j中如何添加節點,修改節點,刪除節點??
          ?71 ?????*?? @param ?filename?修改對象文件??
          ?72 ?????*?? @param ?newfilename?修改后另存為該文件???
          ?73 ?????*?? @return ?返回操作結果,?0表失敗,?1表成功?
          ?74 ????? */

          ?75 ???? public ? int ?ModiXMLFile(String?filename,?String?newfilename)? {
          ?76 ???????? int ?returnValue? = ? 0 ;
          ?77 ???????? try ? {
          ?78 ????????????SAXReader?saxReader? = ? new ?SAXReader();
          ?79 ????????????Document?document? = ?saxReader.read( new ?File(filename));
          ?80 ???????????? /** ?修改內容之一:?如果book節點中show屬性的內容為yes,則修改成no? */
          ?81 ???????????? /** ?先用xpath查找對象? */
          ?82 ????????????List?list? = ?document.selectNodes( " /books/book/@show " );
          ?83 ????????????Iterator?iter? = ?list.iterator();
          ?84 ???????????? while ?(iter.hasNext())? {
          ?85 ????????????????Attribute?attribute? = ?(Attribute)?iter.next();
          ?86 ???????????????? if ?(attribute.getValue().equals( " yes " ))? {
          ?87 ????????????????????attribute.setValue( " no " );
          ?88 ????????????????}

          ?89 ????????????}

          ?90 ???????????? /** ???????????
          ?91 ?????????????*??修改內容之二:?把owner項內容改為Tshinghua?
          ?92 ?????????????*??并在owner節點中加入date節點,date節點的內容為2004-09-11,還為date節點添加一個屬性type??????
          ?93 ????????????? */

          ?94 ????????????list? = ?document.selectNodes( " /books/owner " );
          ?95 ????????????iter? = ?list.iterator();
          ?96 ???????????? if ?(iter.hasNext())? {
          ?97 ????????????????Element?ownerElement? = ?(Element)?iter.next();
          ?98 ????????????????ownerElement.setText( " Tshinghua " );
          ?99 ????????????????Element?dateElement? = ?ownerElement.addElement( " date " );
          100 ????????????????dateElement.setText( " 2004-09-11 " );
          101 ????????????????dateElement.addAttribute( " type " ,? " Gregorian?calendar " );
          102 ????????????}

          103 ???????????? /** ?修改內容之三:?若title內容為Dom4j?Tutorials,則刪除該節點? */
          104 ????????????list? = ?document.selectNodes( " /books/book " );
          105 ????????????iter? = ?list.iterator();
          106 ???????????? while ?(iter.hasNext())? {
          107 ????????????????Element?bookElement? = ?(Element)?iter.next();
          108 ????????????????Iterator?iterator? = ?bookElement.elementIterator( " title " );
          109 ???????????????? while ?(iterator.hasNext())? {
          110 ????????????????????Element?titleElement? = ?(Element)?iterator.next();
          111 ???????????????????? if ?(titleElement.getText().equals( " Dom4j?Tutorials " ))? {
          112 ????????????????????????bookElement.remove(titleElement);
          113 ????????????????????}

          114 ????????????????}

          115 ????????????}

          116 ???????????? try ? {
          117 ???????????????? /** ?將document中的內容寫入文件中? */
          118 ????????????????XMLWriter?writer? = ? new ?XMLWriter( new ?FileWriter( new ?File(
          119 ????????????????????????newfilename)));
          120 ????????????????writer.write(document);
          121 ????????????????writer.close();
          122 ???????????????? /** ?執行成功,需返回1? */
          123 ????????????????returnValue? = ? 1 ;
          124 ????????????}
          ? catch ?(Exception?ex)? {
          125 ????????????????ex.printStackTrace();
          126 ????????????}

          127 ????????}
          ? catch ?(Exception?ex)? {
          128 ????????????ex.printStackTrace();
          129 ????????}

          130 ???????? return ?returnValue;
          131 ????}

          132
          133 ???? /**
          134 ?????*??格式化XML文檔,并解決中文問題
          135 ?????*?? @param ?filename
          136 ?????*?? @return
          137 ????? */

          138 ???? public ? int ?formatXMLFile(String?filename)? {
          139 ???????? int ?returnValue? = ? 0 ;
          140 ???????? try ? {
          141 ????????????SAXReader?saxReader? = ? new ?SAXReader();
          142 ????????????Document?document? = ?saxReader.read( new ?File(filename));
          143 ????????????XMLWriter?writer? = ? null ;
          144 ???????????? /** ?格式化輸出,類型IE瀏覽一樣? */
          145 ????????????OutputFormat?format? = ?OutputFormat.createPrettyPrint();
          146 ???????????? /** ?指定XML編碼? */
          147 ????????????format.setEncoding( " GBK " );
          148 ????????????writer? = ? new ?XMLWriter( new ?FileWriter( new ?File(filename)),?format);
          149 ????????????writer.write(document);
          150 ????????????writer.close();
          151 ???????????? /** ?執行成功,需返回1? */
          152 ????????????returnValue? = ? 1 ;
          153 ????????}
          ? catch ?(Exception?ex)? {
          154 ????????????ex.printStackTrace();
          155 ????????}

          156 ???????? return ?returnValue;
          157 ????}

          158 }
          posted on 2006-09-20 15:46 Warren.Wu 閱讀(158) 評論(0)  編輯  收藏 所屬分類: DOM4J

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 齐齐哈尔市| 西宁市| 黎川县| 济源市| 德州市| 称多县| 镇康县| 丹寨县| 霍山县| 彭水| 宜昌市| 嘉黎县| 邢台县| 长泰县| 钟祥市| 台南县| 石楼县| 安丘市| 河南省| 巴彦淖尔市| 封开县| 湘乡市| 南靖县| 伊春市| 高碑店市| 屏东县| 商丘市| 华亭县| 汉阴县| 白玉县| 翼城县| 泸定县| 阜康市| 枝江市| 铁岭县| 莆田市| 徐州市| 泗洪县| 驻马店市| 宜阳县| 彭水|