休息食客

          隨心而動

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            16 隨筆 :: 7 文章 :: 2 評論 :: 0 Trackbacks

          假如有一個字符串的內容是xml格式,如:

           

                  String aa = "<row>"+
                                
          "<user>"+
                                  
          "<userid>1000</userid>"+
                                  
          "<username>aaa</username>"+
                                  
          "</user>"+
                                
          "<user>"+
                                  
          "<userid>1001</userid>"+
                                  
          "<username>bbb</username>"+
                                
          "</user>"+
                              
          "</row>";

          這是一個字符串,不是一個XML文檔,只是該字符串里面的內容是XML格式,該怎么解析呢?
          假如我有一個User對象,有userid和username屬性,然后把該字符串里面的數據解析到User對象來。
          思路:把該字符串先解析為docment樹形文檔,然后獲取根元素row,再然后獲取根元素的第一個子元素user,然后獲取user元素的第一個子元素userid并把該值存入user對象里
          看代碼:

          import java.util.ArrayList;
          import java.util.Iterator;
          import java.util.List;

          import org.dom4j.Document;
          import org.dom4j.DocumentException;
          import org.dom4j.DocumentHelper;
          import org.dom4j.Element;

          public class test {    

              
          /**
               * 
          @param args
               
          */

              
          public static void main(String[] args) {
                  
          // TODO Auto-generated method stub

                  String aa 
          = "<row>"+
                                
          "<user>"+
                                  
          "<userid>1000</userid>"+
                                  
          "<username>aaa</username>"+
                                  
          "</user>"+
                                
          "<user>"+
                                  
          "<userid>1001</userid>"+
                                  
          "<username>bbb</username>"+
                                
          "</user>"+
                              
          "</row>";
                  test t 
          = new test();
                  List
          <User> lu = new ArrayList<User>();
                  User user 
          = new User();
                  lu 
          = t.Analysis(aa, lu, user);
                  
          for(User u : lu){;
                      System.out.println(u.getUserid()
          +"  "+u.getUsername());
                  }

              }

              
              
          public test(){
                  
              }

              
              
          public List<User> Analysis(String s,List<User> lu,User user){
                  Document doc 
          = null;             
                  
          try {
                      doc 
          = DocumentHelper.parseText(s);// 將字符串轉為document樹形格式
                  }
           catch (DocumentException e) {
                      e.printStackTrace();
                  }
                   
                  Element rootElt 
          = doc.getRootElement(); // 獲取根節點
                  Iterator iter = rootElt.elementIterator("user"); // 獲取根節點下的子節點user
                  while (iter.hasNext()) {
                      user 
          = new User();
                      Element recordEle 
          = (Element) iter.next();
                      Iterator iters 
          = recordEle.elementIterator("userid"); // 獲取子節點user下的子節點userId
                      while(iters.hasNext()){
                          Element userId 
          = (Element) iters.next();
                          user.setUserid(Long.parseLong(userId.getText()));
                      }

                      iters 
          = recordEle.elementIterator("username"); // 獲取子節點user下的子節點username
                      while(iters.hasNext()){
                          Element username 
          = (Element) iters.next();
                          user.setUsername(username.getText());
                      }

                      lu.add(user);
                  }
           
                  
          return lu;
              }


          }


          class User {
              
          private Long userid;
              
          private String username;
              
          public Long getUserid() {
                  
          return userid;
              }

              
          public void setUserid(Long userid) {
                  
          this.userid = userid;
              }

              
          public String getUsername() {
                  
          return username;
              }

              
          public void setUsername(String username) {
                  
          this.username = username;
              }
              
          }

          整個解析過程及思路在Analysis方法里面,注釋寫清楚了,可以自己去琢磨!

          posted on 2014-09-28 15:01 休息食客 閱讀(296) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 察隅县| 安阳县| 黑水县| 洛川县| 沙洋县| 穆棱市| 应用必备| 台前县| 福贡县| 扶风县| 康保县| 香河县| 于田县| 特克斯县| 巴林左旗| 建湖县| 大宁县| 黄龙县| 凯里市| 招远市| 永和县| 遵义县| 屏南县| 鹿泉市| 广州市| 青河县| 南漳县| 棋牌| 合山市| 灯塔市| 枝江市| 广平县| 林州市| 桐梓县| 和政县| 喀喇| 五大连池市| 介休市| 临湘市| 广汉市| 前郭尔|