<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 31  文章 - 2  trackbacks - 0
    dom4j 是一種解析 XML 文檔的開放源代碼 XML 框架,與 W3C DOM API 相比,使用 dom4j 所包含的解析器的好處是 dom4j 擁有本地的 XPath 支持.DOM 解析器不支持使用 XPath 選擇節點.

    ??該解析器可以從 http://dom4j.org/ 獲取.
    java 代碼

    java 代碼
    1. package ?com.nikee.dom4j;???? ??
    2. import ?org.dom4j.Document;???? ??
    3. import ?org.dom4j.DocumentHelper;???? ??
    4. import ?org.dom4j.Element;???? ??
    5. import ?org.dom4j.io.OutputFormat;???? ??
    6. import ?org.dom4j.io.XMLWriter;???? ??
    7. import ?java.io.*;???? ??
    8. ????? ??
    9. public ? class ?XmlDom4J{???? ??
    10. ? public ? void ?generateDocument(){???? ??
    11. ?? //使用?DocumentHelper?類創建一個文檔實例。?DocumentHelper?是生成?XML?文檔節點的?dom4j?API?工廠類???? ??
    12. ??Document?document?=?DocumentHelper.createDocument();???? ??
    13. ?????? ??
    14. ?? //使用?addElement()方法創建根元素catalog?,?addElement()用于向?XML?文檔中增加元素???? ??
    15. ??Element?catalogElement?=?document.addElement( "catalog" );???? ??
    16. ?????? ??
    17. ?? //在?catalog?元素中使用?addComment()?方法添加注釋"An?XML?catalog"???? ??
    18. ??catalogElement.addComment( "An?XML?Catalog" );???? ??
    19. ?????? ??
    20. ?? //在?catalog?元素中使用?addProcessingInstruction()?方法增加一個處理指令???? ??
    21. ??catalogElement.addProcessingInstruction( "target" , "text" );???? ??
    22. ?????? ??
    23. ?? //在?catalog?元素中使用?addElement()?方法增加?journal?元素???? ??
    24. ??Element?journalElement?=?catalogElement.addElement( "journal" );???? ??
    25. ?? //使用?addAttribute()?方法向?journal?元素添加?title?和?publisher?屬性???? ??
    26. ??journalElement.addAttribute( "title" ,? "XML?Zone" );???? ??
    27. ??journalElement.addAttribute( "publisher" ,? "IBM?developerWorks" );???? ??
    28. ?????? ??
    29. ?????? ??
    30. ??Element?articleElement=journalElement.addElement( "article" );???? ??
    31. ??articleElement.addAttribute( "level" ,? "Intermediate" );???? ??
    32. ??articleElement.addAttribute( "date" ,? "December-2001" );???? ??
    33. ?????? ??
    34. ??Element?titleElement=articleElement.addElement( "title" );???? ??
    35. ??titleElement.setText( "Java?configuration?with?XML?Schema" );???? ??
    36. ?????? ??
    37. ??Element?authorElement=articleElement.addElement( "author" );???? ??
    38. ??Element?firstNameElement=authorElement.addElement( "firstname" );???? ??
    39. ??firstNameElement.setText( "Marcello" );???? ??
    40. ??Element?lastNameElement=authorElement.addElement( "lastname" );???? ??
    41. ??lastNameElement.setText( "Vitaletti" );???? ??
    42. ?????? ??
    43. ?? //可以使用?addDocType()?方法添加文檔類型說明???? ??
    44. ?? //這樣就向?XML?文檔中增加文檔類型說明:???? ??
    45. ??document.addDocType( "catalog" , "nikee" , "file://c:/Dtds/catalog.dtd" );???? ??
    46. ?? try {???? ??
    47. ??? //XMLWriter?output?=?new?XMLWriter(new?FileWriter(?new?File("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml")));???? ??
    48. ????FileOutputStream?fos= new ?FileOutputStream( "D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml" );???? ??
    49. ???????OutputFormat?of= new ?OutputFormat( "????" ,? true );???? ??
    50. ???????XMLWriter?xw= new ?XMLWriter(fos,?of);???? ??
    51. ???????xw.write(?document?);???? ??
    52. ???????xw.close();???? ??
    53. ??}???? ??
    54. ?? catch (IOException?e)???? ??
    55. ??{???? ??
    56. ???System.out.println(e.getMessage());???? ??
    57. ??}???? ??
    58. ?}???? ??
    59. ????? ??
    60. ? public ? static ? void ?main(String[]?argv){???? ??
    61. ??XmlDom4J?dom4j= new ?XmlDom4J();???? ??
    62. ??dom4j.generateDocument();???? ??
    63. ?}???? ??
    64. }???? ??

    xml 代碼

    1. <!--sp--> xml? version = "1.0" ? encoding = "UTF-8" ?> ??? ??
    2. <!--CTYPE?catalog?PUBLIC?"nikee"?"file://c:/Dtds/catalog.dtd"</sp--> > ??? ??
    3. ??? ??
    4. ? < catalog > ??? ??
    5. ???? <!--An?XML?Catalog--><!--sp--> target?text ?> ??? ??
    6. ??? ??
    7. ???? < journal ? title = "XML?Zone" ? publisher = "IBM?developerWorks" > ??? ??
    8. ????? < article ? level = "Intermediate" ? date = "December-2001" > ??? ??
    9. ????????? < title > Java?configuration?with?XML?Schematitle > ??? ??
    10. ????????? < author > ??? ??
    11. ????????????? < firstname > Marcellofirstname > ??? ??
    12. ????????????? < lastname > Vitalettilastname > ??? ??
    13. ?????????author > ??? ??
    14. ?????article > ??? ??
    15. ????journal > ??? ??
    16. ?catalog > ??

    XmlDom4J.java 用于創建 XML 文檔 catalog.xml

    java 代碼
    java 代碼
    1. package?com.nikee.dom4j;???? ??
    2. ??? ??
    3. import?org.dom4j.Document;???? ??
    4. import?org.dom4j.Element;???? ??
    5. import?org.dom4j.Attribute;???? ??
    6. import?java.util.List;???? ??
    7. import?java.util.Iterator;???? ??
    8. ??? ??
    9. import?org.dom4j.io.OutputFormat;???? ??
    10. import?org.dom4j.io.XMLWriter;???? ??
    11. import?java.io.*;???? ??
    12. ??? ??
    13. import?org.dom4j.DocumentException;???? ??
    14. import?org.dom4j.io.SAXReader;????? ??
    15. ????? ??
    16. public?class?Dom4Jparser{???? ??
    17. ????public?Dom4Jparser(){???? ??
    18. ????????//construction???? ??
    19. ????}???? ??
    20. ???????? ??
    21. ????public?void?modifyDocument(File?inputXml){???? ??
    22. ????????try{???? ??
    23. ????????????//使用?SAXReader?解析?XML?文檔?catalog.xml???? ??
    24. ????????????SAXReader?saxReader?=?new?SAXReader();???? ??
    25. ????????????Document?document?=?saxReader.read(inputXml);???? ??
    26. ???????????????? ??
    27. ????????????//使用?XPath?表達式從?article?元素中獲得?level?節點列表。如果?level?屬性值是"Intermediate"則改為"Introductory"???? ??
    28. ????????????List?list?=?document.selectNodes("http://article/@level");???? ??
    29. ????????????Iterator?iter=list.iterator();???? ??
    30. ????????????while(iter.hasNext()){???? ??
    31. ????????????????Attribute?attribute=(Attribute)iter.next();???? ??
    32. ????????????????if(attribute.getValue().equals("Intermediate"))???? ??
    33. ????????????????????attribute.setValue("Introductory");????? ??
    34. ????????????}???? ??
    35. ???????????????? ??
    36. ????????????list?=?document.selectNodes("http://article/@date"?);???? ??
    37. ????????????iter=list.iterator();???? ??
    38. ????????????while(iter.hasNext()){???? ??
    39. ????????????????Attribute?attribute=(Attribute)iter.next();???? ??
    40. ????????????????if(attribute.getValue().equals("December-2001"))???? ??
    41. ????????????????????attribute.setValue("October-2002");???? ??
    42. ????????????}???? ??
    43. ???????????????? ??
    44. ????????????//獲取?article?元素列表,從?article?元素中的?title?元素得到一個迭代器,并修改?title?元素的文本???? ??
    45. ????????????list?=?document.selectNodes("http://article"?);???? ??
    46. ????????????iter=list.iterator();???? ??
    47. ????????????while(iter.hasNext()){???? ??
    48. ????????????????Element?element=(Element)iter.next();???? ??
    49. ????????????????Iterator?iterator=element.elementIterator("title");???? ??
    50. ????????????????while(iterator.hasNext()){???? ??
    51. ????????????????????Element?titleElement=(Element)iterator.next();???? ??
    52. ????????????????????if(titleElement.getText().equals("Java?configuration?with?XML?Schema"))???? ??
    53. ????????????????????????titleElement.setText("Create?flexible?and?extensible?XML?schema");???? ??
    54. ????????????????}???? ??
    55. ????????????}???? ??
    56. ???????????????? ??
    57. ???????????????? ??
    58. ????????????list?=?document.selectNodes("http://article/author"?);???? ??
    59. ????????????iter=list.iterator();???? ??
    60. ????????????while(iter.hasNext()){???? ??
    61. ????????????????Element?element=(Element)iter.next();???? ??
    62. ????????????????Iterator?iterator=element.elementIterator("firstname");???? ??
    63. ????????????????while(iterator.hasNext()){???? ??
    64. ????????????????????Element?firstNameElement=(Element)iterator.next();???? ??
    65. ????????????????????if(firstNameElement.getText().equals("Marcello"))???? ??
    66. ????????????????????????firstNameElement.setText("Ayesha");???? ??
    67. ????????????????}???? ??
    68. ????????????}???? ??
    69. ???????????????? ??
    70. ????????????list?=?document.selectNodes("http://article/author"?);???? ??
    71. ????????????iter=list.iterator();???? ??
    72. ????????????while(iter.hasNext()){???? ??
    73. ????????????????Element?element=(Element)iter.next();???? ??
    74. ????????????????Iterator?iterator=element.elementIterator("lastname");???? ??
    75. ????????????????while(iterator.hasNext()){???? ??
    76. ????????????????????Element?lastNameElement=(Element)iterator.next();???? ??
    77. ????????????????????if(lastNameElement.getText().equals("Vitaletti"))???? ??
    78. ????????????????????????lastNameElement.setText("Malik");???? ??
    79. ????????????????}???? ??
    80. ????????????}???? ??
    81. ???????????????? ??
    82. ????????????FileOutputStream?fos=new?FileOutputStream("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog-modified.xml");???? ??
    83. ????????????OutputFormat?of=new?OutputFormat("???",true);???? ??
    84. ????????????XMLWriter?xw=new?XMLWriter(fos,?of);???? ??
    85. ????????????xw.write(?document?);???? ??
    86. ????????????xw.close();???? ??
    87. ????????}???? ??
    88. ????????catch(DocumentException?e)???? ??
    89. ????????{???? ??
    90. ????????????e.printStackTrace();???? ??
    91. ????????}???? ??
    92. ????????catch(IOException?e){???? ??
    93. ????????????e.printStackTrace();???? ??
    94. ????????}???? ??
    95. ????}???? ??
    96. ???????? ??
    97. ????public?static?void?main(String?argv[]){???? ??
    98. ????????Dom4Jparser?dom4jParser=new?Dom4Jparser();???? ??
    99. ????????dom4jParser.modifyDocument(new?File("D:/eclipse3.2/workspace/WebServices/src/com/nikee/dom4j/catalog.xml"));???? ??
    100. ????}???? ??
    101. }???? ??
    xml 代碼
    xml 代碼
    1. <!--sp--> xml? version = "1.0" ? encoding = "UTF-8" ?> ??? ??
    2. ??? ??
    3. <!--<!DOCTYPE?catalog?PUBLIC?"nikee"?"file://c:/Dtds/catalog.dtd">--> ??? ??
    4. < catalog > ??? ??
    5. <!--An?XML?Catalog--><!--sp--> target?text ?> ??? ??
    6. ? < journal ? title = "XML?Zone" ? publisher = "IBM?developerWorks" > ????? ??
    7. ??? < article ? level = "Introductory" ? date = "October-2002" > ??????? ??
    8. ?????? < title > Create?flexible?and?extensible?XML?schematitle > ??? ??
    9. ?????? < author > ???????? ??
    10. ????????? < firstname > Ayeshafirstname > ??? ??
    11. ????????? < lastname > Maliklastname > ??? ??
    12. ??????author > ??? ??
    13. ???article > ??? ??
    14. ?journal > ??? ??
    15. catalog > ????
    Dom4Jparser.java用于修改 XML 文檔 catalog.xml為catalog-modified.xml

    問題總結:

    1.當catalog.xml有<!--CTYPE catalog PUBLIC "nikee" "file://c:/Dtds/catalog.dt-->這一句,Dom4Jparser.java修改 XML 文檔 catalog.xml為catalog-modified.xml時,發生異常org.dom4j.DocumentException: c Nested exception: c.

    原因:我自己沒有此 file://c:/Dtds/catalog.dtd .

    解決辦法:刪掉此行.

    2.除了加入dom4j.jar包外,必須加入jaxen.jar包,否則會發生異常.jaxen包可在 http://jaxen.org/ 下載.

    posted on 2007-11-02 18:00 緣來如此 閱讀(6986) 評論(0)  編輯  收藏 所屬分類: XML

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


    網站導航:
     
    主站蜘蛛池模板: 久久亚洲精品国产精品婷婷| a级成人毛片免费图片| 啊灬啊灬别停啊灬用力啊免费看| 一区视频免费观看| 亚洲一区二区三区高清| 国产乱子伦精品免费女| 久久久精品免费国产四虎| 亚洲国产乱码最新视频| 亚洲最大AV网站在线观看| 国产h视频在线观看免费| 2022免费国产精品福利在线| 亚洲国产美女精品久久久久| 亚洲乱码日产精品a级毛片久久| 18禁网站免费无遮挡无码中文| 黄色三级三级免费看| 在线观看亚洲一区二区| 又爽又黄无遮挡高清免费视频 | 亚洲a∨无码精品色午夜| 久久亚洲国产成人亚| 免费播放特黄特色毛片| 91免费在线播放| 中文字字幕在线高清免费电影| 亚洲综合av一区二区三区不卡| 亚洲AV午夜成人片| 免费国产成人高清视频网站| 中文字幕免费在线看线人 | 精品久久久久久亚洲精品| 中文字幕亚洲图片| 国产免费观看a大片的网站| 免费毛片a在线观看67194 | 无遮免费网站在线入口| 久爱免费观看在线网站 | 国产视频精品免费| 69av免费观看| 国产成人精品无码免费看| 色哟哟国产精品免费观看| 亚洲丶国产丶欧美一区二区三区| 亚洲成人福利在线| 亚洲精品天天影视综合网| 丝袜熟女国偷自产中文字幕亚洲| 免费国产高清视频|