XML解析之DOM

来源:互联网 发布:bp算法的基本思想 编辑:程序博客网 时间:2024/05/22 15:00

今天我们来用DOM解析XML。
首先我们来写一个简单的XML,student.xml:

<?xml version="1.0" encoding="UTF-8"?><student>    <name>张三</name>    <sex></sex>    <age>20</age></student>
public class DOM01 {    public static void main(String[] args) {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        try {            DocumentBuilder builder = factory.newDocumentBuilder();            Document doc = builder.parse("src/student.xml");            NodeList nodeList = doc.getElementsByTagName("student");            Element e = (Element) nodeList.item(0);            String name = e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();            System.out.println("姓名:" + name);            String sex = e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue();            System.out.println("性别:" + sex);            String age = e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();            System.out.println("年龄:" + age);        } catch (Exception e) {            e.printStackTrace();        }    }}

下面我们再来一个复杂一点的XML文件,students.xml。

<?xml version="1.0" encoding="UTF-8"?><students>    <student>        <name id="001">张三</name>        <sex></sex>        <age>20</age>    </student>    <student>        <name id="002">李四</name>        <sex></sex>        <age>21</age>    </student></students>
public class DOM02 {    public static void printNodeAttr(Node node) {        NamedNodeMap map = node.getAttributes();        for (int i = 0; i < map.getLength(); i++) {            Node attrNode = map.item(i);            System.out.println(attrNode.getNodeName() + ":" + attrNode.getNodeValue());        }    }    public static void main(String[] args) {        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();        try {            DocumentBuilder builder = factory.newDocumentBuilder();            Document doc = builder.parse("src/students.xml");            NodeList nodeList = doc.getElementsByTagName("students");            Element element = (Element) nodeList.item(0);            NodeList studentNodeList = element.getElementsByTagName("student");            System.out.println(studentNodeList.getLength());            for (int i = 0; i < studentNodeList.getLength(); i++) {                Element e = (Element) studentNodeList.item(i);                printNodeAttr(e.getElementsByTagName("name").item(0));                String name = e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();                System.out.println("姓名:" + name);                String sex = e.getElementsByTagName("sex").item(0).getFirstChild().getNodeValue();                System.out.println("性别:" + sex);                String age = e.getElementsByTagName("age").item(0).getFirstChild().getNodeValue();                System.out.println("年龄:" + age);            }        } catch (Exception e) {            e.printStackTrace();        }    }}
0 0