休息食客

          隨心而動(dòng)

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            16 隨筆 :: 7 文章 :: 2 評(píng)論 :: 0 Trackbacks

          假如有一個(gè)字符串的內(nèi)容是xml格式,如:

           

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

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

          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);// 將字符串轉(zhuǎn)為document樹(shù)形格式
                  }
           catch (DocumentException e) {
                      e.printStackTrace();
                  }
                   
                  Element rootElt 
          = doc.getRootElement(); // 獲取根節(jié)點(diǎn)
                  Iterator iter = rootElt.elementIterator("user"); // 獲取根節(jié)點(diǎn)下的子節(jié)點(diǎn)user
                  while (iter.hasNext()) {
                      user 
          = new User();
                      Element recordEle 
          = (Element) iter.next();
                      Iterator iters 
          = recordEle.elementIterator("userid"); // 獲取子節(jié)點(diǎn)user下的子節(jié)點(diǎn)userId
                      while(iters.hasNext()){
                          Element userId 
          = (Element) iters.next();
                          user.setUserid(Long.parseLong(userId.getText()));
                      }

                      iters 
          = recordEle.elementIterator("username"); // 獲取子節(jié)點(diǎn)user下的子節(jié)點(diǎn)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;
              }
              
          }

          整個(gè)解析過(guò)程及思路在Analysis方法里面,注釋寫(xiě)清楚了,可以自己去琢磨!

          posted on 2014-09-28 15:01 休息食客 閱讀(296) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java
          主站蜘蛛池模板: 宜宾县| 稻城县| 德州市| 卓尼县| 资兴市| 白山市| 弋阳县| 鲜城| 嘉荫县| 恩平市| 贡嘎县| 噶尔县| 纳雍县| 长寿区| 宜州市| 原阳县| 尤溪县| 黄浦区| 德令哈市| 商城县| 潢川县| 鄂托克前旗| 松桃| 汕头市| 龙岩市| 通道| 邵阳市| 禄劝| 江津市| 繁峙县| 陆川县| 嘉义市| 始兴县| 平昌县| 西城区| 桦川县| 东港市| 巴东县| 广安市| 自贡市| 安乡县|