休息食客

随心而动

  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 休息食客 阅读(283) 评论(0)  编辑  收藏 所属分类: java

只有注册用户登录后才能发表评论。


网站导航: