使用java读取/解析XML数据

来源:互联网 发布:360软件开放 编辑:程序博客网 时间:2024/05/19 02:44

DOM方式解析XML

在根目录下新建languages.xml文件,其内容为

<?xml version="1.0" encoding="UTF-8"?><languages cat = "it">    <lan id="1">        <name>java</name>        <ide>Eclipse</ide>    </lan>    <lan id="2">        <name>Swift</name>        <ide>Xcode</ide>    </lan>    <lan id="3">        <name>C#</name>        <ide>Visual Studio</ide>    </lan></languages>

ReadXML.java

import java.io.File;import java.io.IOException;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import javax.xml.parsers.ParserConfigurationException;import org.w3c.dom.Document;import org.w3c.dom.Element;import org.w3c.dom.Node;import org.w3c.dom.NodeList;import org.xml.sax.SAXException;public class ReadXML {    //使用java读取XML数据    public static void main(String[] args) {        //DOM 方式解析XML        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        try {            DocumentBuilder builder = factory.newDocumentBuilder();            Document document = builder.parse(new File("languages.xml"));            Element root = document.getDocumentElement();            System.out.println("cat="+root.getAttribute("cat"));            NodeList list = root.getElementsByTagName("lan");            for(int i=0;i<list.getLength();i++){                Element lan = (Element) list.item(i);                System.out.println("----------");                System.out.println("id="+lan.getAttribute("id"));                /*                 * 获取其子节点时,通过getElementsByTagName获取NodeList的方式获取,效率较低,故不推荐                 */                //  Element name = (Element) lan.getElementsByTagName("name").item(0);                //  System.out.println("name="+name.getTextContent());                //推荐使用:getChildNodes()                NodeList child = lan.getChildNodes();                for(int j=0;j<child.getLength();j++){                    Node element = child.item(j);                    if(element instanceof Element){                        System.out.println(element.getNodeName()+"="+element.getTextContent());                    }                }            }        } catch (ParserConfigurationException e) {            e.printStackTrace();        } catch (SAXException e) {            // TODO Auto-generated catch block            e.printStackTrace();        } catch (IOException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

运行后的结果为:

cat=it----------id=1name=javaide=Eclipse----------id=2name=Swiftide=Xcode----------id=3name=C#ide=Visual Studio
0 0
原创粉丝点击