Java中读取XML

从request中解析xml

		byte [] b=new byte[1024];//定义长度
		Map<String,String []> m1= request.getParameterMap();//获取xml
		request.getInputStream().read(b);//读取
		String st=new String(b);//存到一个String对象
		st=st.trim();//去空格

		CallLog clog = new CallLog();//实例化一个对象用于保存
		DuXMLDoc doc = new DuXMLDoc();//读取的类
		clog = doc.xmlElements(st);//读取
		System.out.println("通话结束时间:"+clog.getStoptime());

DUXMLDoc();读取方法类


package xxxxx;

import java.io.IOException;
import java.io.StringReader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.Namespace;
import org.jdom.input.SAXBuilder;
import org.xml.sax.InputSource;

import com.xxxx.entity.CallLog;

public class DuXMLDoc {
    public CallLog xmlElements(String xmlDoc) {
  	  CallLog clog = new CallLog();
        //创建一个新的字符串
        StringReader read = new StringReader(xmlDoc);
        //创建新的输入源SAX 解析器将使用 InputSource 对象来确定如何读取 XML 输入
        InputSource source = new InputSource(read);
        //创建一个新的SAXBuilder
        SAXBuilder sb = new SAXBuilder();
        try {
            //通过输入源构造一个Document
            Document doc = sb.build(source);
            //取的根元素
            Element root = doc.getRootElement();
            System.out.println(root.getName());//输出根元素的名称(测试)
            //得到根元素所有子元素的集合
            List jiedian = root.getChildren();
            //获得XML中的命名空间(XML中未定义可不写)
            Namespace ns = root.getNamespace();
            Element et = null;
            
            for(int i=0;i<jiedian.size();i++){
            	et = (Element) jiedian.get(i);//循环依次得到子元素
//            	System.out.println(et.getValue(""));
             	if(et.getName().equals("event"))
            	   clog.setEvent(et.getText());
             	else if(et.getName().equals("callid"))
            	   clog.setCallid(et.getText());
             	else if(et.getName().equals("accountid"))
             		clog.setAccountid(et.getText());
             	else if(et.getName().equals("appid"))
             		clog.setAppid(et.getText());
             	else if(et.getName().equals("calltype"))
             		clog.setCalltype(et.getText());
             	else if(et.getName().equals("callertype"))
             		clog.setCallertype(et.getText());
             	else if(et.getName().equals("caller"))
             		clog.setCaller(et.getText());
             	else if(et.getName().equals("calledtype"))
             		clog.setCalledtype(et.getText());
             	else if(et.getName().equals("called"))
             		clog.setCalled(et.getText());
             	else if(et.getName().equals("length"))
             		clog.setLength(et.getText());
             	else if(et.getName().equals("starttime"))
             		clog.setStarttime(et.getText());
             	else if(et.getName().equals("stoptime"))
             		clog.setStoptime(et.getText());
             	else if(et.getName().equals("reason"))
             		clog.setReason(et.getText());
             	else if(et.getName().equals("subreason"))
             		clog.setSubreason(et.getText());
            }
            System.out.println(clog.toString());
            
//            et = (Element) jiedian.get(0);
//            List zjiedian = et.getChildren();
//            for(int j=0;j<zjiedian.size();j++){
//                Element xet = (Element) zjiedian.get(j);
//                System.out.println(xet.getName());
//            }
        } catch (JDOMException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        } catch (IOException e) {
            // TODO 自动生成 catch 块
            e.printStackTrace();
        }
        return clog;
    }
 
}






你可能感兴趣的:(Java中读取XML)