心遠專欄

             :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            24 隨筆 :: 0 文章 :: 9 評論 :: 0 Trackbacks

          1.生成一個XML文件:

          public ? void ?generateDocument()? {
          ????????
          /**
          ?????????*?使用?DocumentHelper?類創建一個文檔實例。?
          ?????????*?DocumentHelper?是生成?XML?文檔節點的?dom4j?API?工廠類。
          ?????????
          */

          ????????Document?document?
          = ?DocumentHelper.createDocument();
          ????????
          /**
          ?????????*?使用?addElement()?方法創建根元素?catalog?。?
          ?????????*?addElement()?用于向?XML?文檔中增加元素。
          ?????????
          */

          ????????Element?catalogElement?
          = ?document.addElement( " catalog " );
          ????????
          /**
          ?????????*?在?catalog?元素中使用?addComment()?方法添加注釋“An?XML?catalog”。?
          ?????????
          */

          ????????catalogElement.addComment(
          " An?XML?catalog " );
          ????????
          /**
          ?????????*?在?catalog?元素中使用?addElement()?方法增加?journal?元素。
          ?????????
          */

          ????????Element?journalElement?
          = ?catalogElement.addElement( " journal " );
          ????????
          /**
          ?????????*?使用?addAttribute()?方法向?journal?元素添加?title?和?publisher?屬性。
          ?????????
          */

          ????????journalElement.addAttribute(
          " title " ,? " XML?Zone " );
          ????????journalElement.addAttribute(
          " publisher " ,? " IBM?developerWorks " );

          ????????
          /**
          ?????????*?向?article?元素中添加?journal?元素。?
          ?????????
          */

          ????????Element?articleElement?
          = ?journalElement.addElement( " article " );
          ????????
          /**
          ?????????*?為?article?元素增加?level?和?date?屬性。?
          ?????????
          */

          ????????articleElement.addAttribute(
          " level " ,? " Intermediate " );
          ????????articleElement.addAttribute(
          " date " ,? " December-2001 " );
          ????????
          /**
          ?????????*?向?article?元素中增加?title?元素。?
          ?????????
          */

          ????????Element?titleElement?
          = ?articleElement.addElement( " title " );
          ????????
          /**
          ?????????*?使用?setText()?方法設置?article?元素的文本。?
          ?????????
          */

          ????????titleElement.setText(
          " Java?configuration?with?XML?Schema " );
          ????????
          /**
          ?????????*?在?article?元素中增加?author?元素。?
          ?????????
          */

          ????????Element?authorElement?
          = ?articleElement.addElement( " author " );
          ????????
          /**
          ?????????*?在?author?元素中增加?firstname?元素并設置該元素的文本。?
          ?????????
          */

          ????????Element?firstNameElement?
          = ?authorElement.addElement( " firstname " );
          ????????firstNameElement.setText(
          " Macello " );
          ????????
          /**
          ?????????*?在?author?元素中增加?lastname?元素并設置該元素的文本。?
          ?????????
          */

          ????????Element?lastNameElement?
          = ?authorElement.addElement( " lastname " );
          ????????lastNameElement.setText(
          " Vitaletti " );

          ????????
          try ? {
          ????????????XMLWriter?output?
          = ? new ?XMLWriter( new ?FileWriter( new ?File(
          ????????????????????
          " demo/catalog.xml " )));
          ????????????output.write(document);
          ????????????output.close();
          ????????}
          ? catch ?(IOException?e)? {
          ????????????e.printStackTrace();
          ????????}

          }

          生成的XML文件如下所示:

          <? xml?version="1.0"?encoding="UTF-8" ?>
          < catalog >
          <!-- An?XML?catalog -->
          ????
          < journal? title ="XML?Zone" ?publisher ="IBM?developerWorks" >
          ????????
          < article? level ="Intermediate" ?date ="December-2001" >
          ????????????
          < title > Java?configuration?with?XML?Schema </ title >
          ????????????
          < author >
          ????????????????
          < firstname > Macello </ firstname >
          ????????????????
          < lastname > Vitaletti </ lastname >
          ????????????
          </ author >
          ????????
          </ article >
          ????
          </ journal >
          </ catalog >


          2.讀取該文件,輸出firstname和lastname:

          public ? void ?outPutInfo(String?filename) {
          ????????
          try ? {?
          ????????????File?f?
          = ? new ?File(filename);?
          ????????????SAXReader?reader?
          = ? new ?SAXReader();?
          ????????????Document?doc?
          = ?reader.read(f);?
          ????????????
          ????????????List?list?
          = ?doc.selectNodes( " //article " );
          ????????????Iterator?iter?
          = ?list.iterator();
          ????????????
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Element?element?
          = ?(Element)?iter.next();
          ????????????????Element?nameElement?
          = ? null ;
          ????????????????Iterator?iterator?
          = ?element.elementIterator( " author " );
          ????????????????
          while ?(iterator.hasNext())? {
          ????????????????????nameElement?
          = ?(Element)?iterator.next();
          ????????????????????System.out.println(nameElement.elementText(
          " firstname " ));
          ????????????????????System.out.println(nameElement.elementText(
          " lastname " ));
          ????????????????}

          ????????????}

          ????????}
          ? catch ?(Exception?e)? {?
          ????????????e.printStackTrace();?
          ????????}
          ?
          ????}


          3.修改該文件;

          public ? void ?modifyDocument(String?filename)? {
          ????????
          try ? {
          ????????????File?inputXml?
          = ? new ?File(filename);
          ????????????
          ????????????SAXReader?saxReader?
          = ? new ?SAXReader();
          ????????????Document?document?
          = ?saxReader.read(inputXml);

          ????????????
          /**
          ?????????????*?inputXml?是從?catalog.xml?創建的?java.io.File。
          ?????????????*?使用?XPath?表達式從?article?元素中獲得?level?節點列表。
          ?????????????*?如果?level?屬性值是“Intermediate”則改為“Introductory”。?
          ?????????????
          */

          ????????????List?list?
          = ?document.selectNodes( " //article/@level " );
          ????????????Iterator?iter?
          = ?list.iterator();
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Attribute?attribute?
          = ?(Attribute)?iter.next();
          ????????????????
          if ?(attribute.getValue().equals( " Intermediate " ))
          ????????????????????attribute.setValue(
          " Introductory " );
          ????????????}


          ????????????list?
          = ?document.selectNodes( " //article/@date " );
          ????????????iter?
          = ?list.iterator();
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Attribute?attribute?
          = ?(Attribute)?iter.next();
          ????????????????
          if ?(attribute.getValue().equals( " December-2001 " ))
          ????????????????????attribute.setValue(
          " October-2002 " );

          ????????????}

          ????????????
          ????????????
          /**
          ?????????????*?獲取?article?元素列表,從?article?元素中的?title?元素得到一個迭代器,并修改?title?元素的文本。?
          ?????????????
          */

          ????????????list?
          = ?document.selectNodes( " //article " );
          ????????????iter?
          = ?list.iterator();
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Element?element?
          = ?(Element)?iter.next();
          ????????????????Iterator?iterator?
          = ?element.elementIterator( " title " );
          ????????????????
          while ?(iterator.hasNext())? {
          ????????????????????Element?titleElement?
          = ?(Element)?iterator.next();
          ????????????????????
          if ?(titleElement.getText().equals(
          ????????????????????????????
          " Java?configuration?with?XML?Schema " ))
          ????????????????????????titleElement
          ????????????????????????????????.setText(
          " Create?flexible?and?extensible?XML?Schema " );

          ????????????????}

          ????????????}


          ????????????list?
          = ?document.selectNodes( " //article/author " );
          ????????????iter?
          = ?list.iterator();
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Element?element?
          = ?(Element)?iter.next();
          ????????????????Iterator?iterator?
          = ?element.elementIterator( " firstname " );
          ????????????????
          while ?(iterator.hasNext())? {
          ????????????????????Element?firstNameElement?
          = ?(Element)?iterator.next();
          ????????????????????
          if ?(firstNameElement.getText().equals( " Marcello " ))
          ????????????????????????firstNameElement.setText(
          " Ayesha " );
          ????????????????}

          ????????????}


          ????????????list?
          = ?document.selectNodes( " //article/author " );
          ????????????iter?
          = ?list.iterator();
          ????????????
          while ?(iter.hasNext())? {
          ????????????????Element?element?
          = ?(Element)?iter.next();
          ????????????????Iterator?iterator?
          = ?element.elementIterator( " lastname " );
          ????????????????
          while ?(iterator.hasNext())? {
          ????????????????????Element?lastNameElement?
          = ?(Element)?iterator.next();
          ????????????????????
          if ?(lastNameElement.getText().equals( " Vitaletti " ))
          ????????????????????????lastNameElement.setText(
          " Malik " );

          ????????????????}


          ????????????}

          ????????????XMLWriter?output?
          = ? new ?XMLWriter( new ?FileWriter( new ?File(
          ????????????????????
          " catalog-modified.xml " )));
          ????????????output.write(document);
          ????????????output.close();
          ????????}
          ? catch ?(DocumentException?e)? {
          ????????????System.out.println(e.getMessage());
          ????????}
          ? catch ?(IOException?e)? {
          ????????????System.out.println(e.getMessage());
          ????????}

          ????}
          更新后的XML文件內容如下所示:
          <?xml?version="1.0"?encoding="UTF-8"?>
          <catalog>
          <!--An?XML?catalog-->
          ????
          <journal?title="XML?Zone"?publisher="IBM?developerWorks">
          ????????
          <article?level="Introductory"?date="October-2002">
          ????????????
          <title>Create?flexible?and?extensible?XML?Schema</title>
          ????????????
          <author>
          ????????????????
          <firstname>Macello</firstname>
          ????????????????
          <lastname>Malik</lastname>
          ????????????
          </author>
          ????????
          </article>
          ????
          </journal>
          </catalog>

          posted on 2006-11-13 12:48 心遠 閱讀(176) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 报价| 兖州市| 三原县| 临汾市| 乌什县| 蓝山县| 林甸县| 黄龙县| 卢龙县| 南雄市| 娱乐| 敖汉旗| 如东县| 永兴县| 广州市| 大竹县| 日土县| 镇康县| 宜宾市| 长顺县| 临朐县| 泊头市| 奉节县| 西昌市| 金寨县| 本溪| 新源县| 荣昌县| 库伦旗| 英德市| 大连市| 桃江县| 泾川县| 吉林市| 綦江县| 钟山县| 弥渡县| 兴义市| 大荔县| 二连浩特市| 清丰县|