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

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

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

    dom4j學習總結(一)?

    (一)創建Document的基本操作

    /**
    ? * xml基本操作
    ? */

    ?public void BaseOperation(){
    ??//創建一個document
    ??Document document=DocumentHelper.createDocument();
    ??//創建根結點
    ??Element root=document.addElement("root");
    ??//為根結點添加一個book節點
    ??Element book1=root.addElement("book");
    ??//為book1添加屬性type
    ??book1.addAttribute("type","science");
    ??//為book1添加name子節點
    ??Element name1=book1.addElement("Name");
    ??//并設置其name為"Java"
    ??name1.setText("Java");
    ??//為book1創建一個price節點,并設其價格為100
    ??book1.addElement("price").setText("100");
    ??
    ??//為根結點添加第二個book節點,并設置該book節點的type屬性
    ??Element book2=root.addElement("book").addAttribute("type","science");
    ??//為book1添加name子節點
    ??Element name2=book2.addElement("Name");
    ??//并設置其name為"Oracle"
    ??name2.setText("Oracle");
    ??//為book1創建一個price節點,并設其價格為200
    ??book2.addElement("price").setText("200");
    ??
    ??//輸出xml
    ??System.out.println(document.asXML());
    ?}

    調用BaseOperation,輸出結果為:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    ?<book type="science">
    ??<Name>Java</Name>
    ??<price>100</price>
    ?</book>
    ?<book type="science">
    ??<Name>Oracle</Name>
    ??<price>200</price>
    ?</book>
    </root>

    (二)根據一個符合Document格式的字符串來生成一個Document

    ?/**將字符串轉化為Document
    ? * @param str? 輸入的字符串
    ? * @return? 生成的document
    ? * @throws DocumentException
    ? */

    ?public Document parserStrtoDocument(String str) throws DocumentException{
    ??Document document=DocumentHelper.parseText(str);
    ??return document;
    ?}

    調用示例:

    String str="<root><book type='science'><Name>Java</Name><price>100</price></book></root>";

    ??Document document = parserStrtoDocument(str);
    ??System.out.println(document.asXML());

    輸出結果為:

    <?xml version="1.0" encoding="UTF-8"?>
    <root>
    ?<book type="science">
    ??<Name>Java</Name>
    ??<price>100</price>
    ?</book>
    </root>

    (三)取得xml節點屬性的基本方法

    ?/**
    ? * 取得xml的節點和屬性的值
    ? * @throws DocumentException
    ? */

    ?public void getBaseInfofromDocument() throws DocumentException{
    ??String str="<root><book type='science'><Name>Java</Name><price>100</price></book></root>";
    ??//生成一個Document
    ??Document document = DocumentHelper.parseText(str);
    ??//取得根結點
    ??Element root=document.getRootElement();
    ??//取得book節點
    ??Element book=root.element("book");
    ??//取得book節點的type屬性的值
    ??String type=book.attributeValue("type");
    ??//取得Name節點
    ??Element name=book.element("Name");
    ??//取得書名
    ??String bookname=name.getText();
    ??//取得書的價錢
    ??int price=Integer.parseInt(book.element("price").getText());
    ??
    ??//輸出書目信息
    ??System.out.println("書名:"+bookname);
    ??System.out.println("所屬類別:"+type);
    ??System.out.println("價格:"+price);
    ?}

    調用getBaseInfofromDocument,輸出結果為:

    書名:Java
    所屬類別:science
    價格:100

    (四)利用迭代,xpath取得節點及其屬性值

    ?/**利用迭代,xpath取得xml的節點及其屬性值
    ? * @throws DocumentException
    ? */

    ?public void getComplexInfofromDocument() throws DocumentException{


    ??String str="<root><book type='science'><Name>Java</Name><price>100</price></book>"
    ???+"<book type='science'><Name>Oracle</Name><price>120</price></book>"
    ???+"<book type='society'><Name>Society security</Name><price>130</price></book>"
    ???+"<author><name>chb</name></author></root>";
    ??//生成一個Document
    ??Document document = DocumentHelper.parseText(str);
    ??
    ??//提取類型為"society"的書
    ??//此處需要添加支持xpath的jar包,詳細見備注
    ??Element society_book=(Element)document.selectSingleNode("/root/book[@type='society']");
    ??System.out.println(society_book.asXML());
    ??
    ??//提取價格節點的列表
    ??System.out.println("-----------價格列表-------------");
    ??List price=document.selectNodes("http://price");
    ??for(int i=0;i<price.size();i++){
    ???Element elem_price=(Element)price.get(i);
    ???System.out.println(elem_price.getText());
    ??}
    ??
    ??//循環根結點下的所有節點,若當前節點為book,則輸出這本書的詳細信息
    ??System.out.println("-------------書目詳情------------");
    ??System.out.println("書名\t\t類別\t\t價格");
    ??Element root=document.getRootElement();
    ??Iterator iterator=root.elementIterator();
    ??while(iterator.hasNext()){
    ???Element element=(Element)iterator.next();
    ???if(element.getName().equals("book")){
    ????System.out.print(element.element("Name").getText()+"\t");
    ????System.out.print(element.attributeValue("type")+"\t\t");
    ????System.out.print(element.element("price").getText()+"\n");
    ???}
    ??}

    ??//查找作者姓名
    ??Element author=(Element)document.selectSingleNode("http://author");
    ??System.out.println("---------"+author.element("name").getText()+"----------");
    ??//提取作者的所有書目名稱
    ??Iterator iterator_book=root.elementIterator("book");??
    ??while(iterator_book.hasNext()){
    ???Element book=(Element)iterator_book.next();
    ???System.out.print(book.element("Name").getText()+"\t");
    ??}
    ??
    ??//屬性迭代
    ??System.out.println("\n-------屬性迭代--------");
    ??String str1="<book type='science' name='Java' price='100'/>";
    ??Document document1=DocumentHelper.parseText(str1);
    ??//開始迭代
    ??Iterator iterator_attribute=document1.getRootElement().attributeIterator();
    ??while(iterator_attribute.hasNext()){
    ???//提取當前屬性
    ???Attribute attribute=(Attribute)iterator_attribute.next();
    ???System.out.println(attribute.getName()+":"+attribute.getValue());
    ??}
    ?}

    調用getComplexInfofromDocument,輸出結果為:

    <book type="society"><Name>Society security</Name><price>130</price></book>
    -----------價格列表-------------
    100
    120
    130
    -------------書目詳情------------
    書名??類別??價格
    Java?science??100
    Oracle?science??120
    Society security?society??130
    ---------chb----------
    Java?Oracle?Society security?
    -------屬性迭代--------
    type:science
    name:Java
    price:100

    備注:調用該方法之前,應該先向工程中添加支持xpath的jar包,否則,會出現以下錯誤:

    java.lang.NoClassDefFoundError: org/jaxen/JaxenException
    ?at org.dom4j.DocumentFactory.createXPath(DocumentFactory.java:230)
    ?at org.dom4j.tree.AbstractNode.createXPath(AbstractNode.java:207)
    ?at org.dom4j.tree.AbstractNode.selectSingleNode(AbstractNode.java:183)
    ?at xml_chb.dom4j_chb.getComplexInfofromDocument(dom4j_chb.java:82)
    ?at xml_chb.dom4j_chb.main(dom4j_chb.java:92)
    Exception in thread "main"

    只需要引入jaxen包就行了,我使用的是hibernate包中的jaxen-1.1-beta-7.jar包。

    posted on 2006-09-24 02:10 揚州夢 閱讀(169) 評論(0)  編輯  收藏 所屬分類: java

    統計

    主站蜘蛛池模板: 亚洲一区二区三区免费视频| 国产精品亚洲一区二区无码 | 美腿丝袜亚洲综合| 免费黄网站在线观看| 亚洲一区二区三区不卡在线播放| 午夜dj在线观看免费视频| 国产精品免费久久久久影院| 亚洲精品美女视频| 污网站免费在线观看| 亚洲无砖砖区免费| 国产在线观看免费完整版中文版| 久久精品免费大片国产大片| 亚洲色欲或者高潮影院| 国产男女猛烈无遮挡免费网站| 国产99视频精品免费专区| 亚洲最大的成人网| 国产AV无码专区亚洲Av| 日韩免费视频播放| 免费精品99久久国产综合精品| 极品色天使在线婷婷天堂亚洲| 亚洲伦理一区二区| 亚洲国产成人久久一区久久| 在线看片v免费观看视频777| 国产黄片不卡免费| 亚洲区日韩精品中文字幕| 亚洲AV成人精品网站在线播放| 国产在线观看免费完整版中文版| 亚洲免费视频播放| 国产羞羞的视频在线观看免费| 337P日本欧洲亚洲大胆艺术图| 亚洲毛片免费视频| 国产亚洲av片在线观看播放| 免费一级国产生活片| 97视频热人人精品免费| 2017亚洲男人天堂一| 免费一级成人毛片| **一级毛片免费完整视| 黄色免费网站在线看| 久久乐国产综合亚洲精品| 亚洲色图在线播放| 国产成人精品日本亚洲网站|