dom编码练习

一、解析xml文件的dom代码

package com.dom;

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;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import java.io.File;
import java.io.IOException;

/**
 * Created by yp-tc-m-2935 on 18/9/29.
 * dom编码
 * 思路:先获取大节点元素,遍历该节点元素,得到每个子节点元素,再次遍历该子节点元素
 * 之至到莫节点元素,获取该元素的textcontent值
 */
public class dom {
    public static void main(String [] args) throws ParserConfigurationException, IOException, SAXException {
        //1 创建JAXPDOM 解析器工厂(没有具体的实现类,需newinstance一个)
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
        //2 根据工厂获取解析器
        DocumentBuilder builder = factory.newDocumentBuilder();
        //3 使用解析器解析文档得到Document对象
        Document document = builder.parse(new File("/Users/yp-tc-m-2935/Documents/mavenProject/servletTest/src/main/java/com/dom/student.xml"));
        //拿到所有的学生并打印学生信息
        //1 获得所有student元素对象
        NodeList students = document.getElementsByTagName("student");
        //2 遍历这些对象,取得number属性
        for(int i=0;i<students.getLength();i++){
//            if(students.item(i) instanceof Element){
//                Element student =(Element)students.item(i);  //是一个一个的student元素
//            }
            if(students.item(i).getNodeType()== Node.ELEMENT_NODE){ //如果是一个student元素
                Element student =(Element)students.item(i);
                String number =student.getAttribute("number");
                //3取得子元素,遍历子元素

                NodeList list = student.getChildNodes();
                for(int x=0;x<list.getLength();x++){
                    if(list.item(x).getNodeType() == Node.ELEMENT_NODE){
                    //获取的可能是name  age   sex
                    Element info =  (Element)list.item(x);
                    if(info.getNodeName().equals("name")){
                       System.out.print(info.getTextContent()+",");   //获取name的文本值
                    }else if(info.getNodeName().equals("sex")){
                        System.out.print(info.getTextContent()+",");
                    }else if(info.getNodeName().equals("age")){
                        System.out.println(info.getTextContent());

                    }
                    }
                }
            }

        }
    }
}

2、xml文件内容

<?xml version="1.0" encoding="UTF-8"?>

<students>
    <student number="IDTEST01">
        <name>tom</name>
        <sex>男</sex>
        <age>10</age>
    </student>
    <student number="IDTEST02">
        <name>Jennery</name>
        <sex>女</sex>
        <age>10</age>
    </student>
</students>

猜你喜欢

转载自blog.csdn.net/ljj123_/article/details/82903671