JAVA解析XML格式字符串

package cn.rhui.framework.util;

import java.io.IOException;
import java.io.StringReader;
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;

public class RedXmlDemo4j {


    public List xmlElements(String xmlDoc) {
        //创建一个新的字符串
        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.getChild("prjName",ns).getText());
                System.out.println(et.getChild("prjUnit",ns).getText());
                System.out.println(et.getChild("buildYear",ns).getText());
                System.out.println(et.getChild("buildMonth",ns).getText());
                System.out.println(et.getChild("buildWay",ns).getText());
                System.out.println(et.getChild("refNumber",ns).getText());
                System.out.println(et.getChild("approveDate",ns).getText());
                System.out.println(et.getChild("estateType",ns).getText());
                System.out.println(et.getChild("subject",ns).getText());
               
                System.out.println(et.getChild("statistics",ns).getText());
                System.out.println(et.getChild("linkman",ns).getText());
                System.out.println(et.getChild("unitName",ns).getText());
                System.out.println(et.getChild("unitAddress",ns).getText());
                System.out.println(et.getChild("investTotal",ns).getText());
                System.out.println(et.getChild("investPlan",ns).getText());
                System.out.println(et.getChild("buildArea",ns).getText());
                System.out.println(et.getChild("economyType",ns).getText());
               
                System.out.println(et.getChild("floorArea",ns).getText());
                System.out.println(et.getChild("character",ns).getText());
                System.out.println(et.getChild("buildArea",ns).getText());
                System.out.println(et.getChild("transactor",ns).getText());
               
                System.out.println(et.getChild("enterDate",ns).getText());
            }
            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 null;
    }
  
    public static void main(String[] args){
   
    RedXmlDemo4j doc = new RedXmlDemo4j();
        String xml = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
        "<Result xmlns=\"http://www.fiorano.com/fesb/activity/DBQueryOnInput2/Out\">"+
           "<row resultcount=\"1\">"+
              "<users_id>1001     </users_id>"+
              "<users_name>wangwei   </users_name>"+
              "<users_group>80        </users_group>"+
              "<users_address>1001号   </users_address>"+
           "</row>"+
           "<row resultcount=\"1\">"+
              "<users_id>1002     </users_id>"+
              "<users_name>wangwei   </users_name>"+
              "<users_group>80        </users_group>"+
              "<users_address>1002号   </users_address>"+
           "</row>"+
        "</Result>";
       
       
           String xml2 = "<?xml version=\"1.0\" encoding=\"gb2312\"?>"+
    "<dataset>"+
        "<smsrow>"+
              "<prjName>项目名称</prjName>"+
              "<prjUnit>项目单位 </prjUnit>"+
              "<buildYear>立项年份</buildYear>"+
              "<buildMonth>立项月份</buildMonth>"+
              "<buildWay>立项方式</buildWay>"+
              "<refNumber>文号</refNumber>"+
              "<approveDate>批准日期</approveDate>"+
              "<estateType>产业类型</estateType>"+
              "<subject>投资主体</subject>"+
             
              "<statistics>统计类别</statistics>"+
              "<linkman>申请单位联系人 </linkman>"+
              "<unitName>申请单位名称</unitName>"+
              "<unitAddress>申请单位地址</unitAddress>"+
              "<unitTown>申请单位所属镇街</unitTown>"+
              "<buildAddress>建设地点</buildAddress>"+
              "<investTotal>总投资</investTotal>"+
              "<investPlan>计划投资</investPlan>"+
              "<buildArea>建筑面积</buildArea>"+
              "<economyType>经济类型</economyType>"+
              "<floorArea>占地面积 </floorArea>"+
              "<character>建设性质</character>"+
              "<transactor>经办人</transactor>"+
              "<enterDate>录入日期</enterDate>"+
        "</smsrow>"
    +"</dataset>";
        doc.xmlElements(xml2);
    }  
}

你可能感兴趣的:(解析xml)