1. 程式人生 > >JAVA之SAX解析XML格式資料--Jdom.jar

JAVA之SAX解析XML格式資料--Jdom.jar

package com.yldyyn.test;

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 java.io.IOException;
import java.io.StringReader;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @Author: yld
 * @Date: 2018-10-30 09:01
 * @Version 1.0
 */
public class DuXmlDoc {
    public static void main(String[] args) {
        DuXmlDoc duXmlDoc = new DuXmlDoc();

    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>";
    duXmlDoc.xmlElements(xml);
}



public List xmlElements(String xmlDoc){
    if (xmlDoc!=null && !xmlDoc.equals("")){
        Pattern pattern = Pattern.compile("\r\n");
        Matcher matcher = pattern.matcher(xmlDoc);
        xmlDoc = matcher.replaceAll("");
    }
    //建立一個新的字串
    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("users_id",ns).getText());
            System.out.println(et.getChild("users_address",ns).getText());
        }
        et = (Element)jiedian.get(0);
        List zjiedian = et.getChildren();
        for (int i = 0; i < zjiedian.size(); i++) {
            Element xet = (Element) zjiedian.get(i);
            System.out.println(xet.getName());
        }


    }catch (JDOMException exception){
        exception.printStackTrace();
    }catch (IOException e){
        e.printStackTrace();
    }
    return null;
}

}
本文摘自某部落格大神的,如果涉嫌侵權,馬上刪除,並道歉