XML的dom

public class DomTest {
    public static void main(String[] args) {
        testXml();
    }

    public static void testXml() {
        try {
            // 得到DOM解析器的工厂实例
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
            // 从DOM工厂中获得DOM解析器
            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
            // 把要解析的xml文档读入DOM解析器
            Document doc = dbBuilder.parse("src/before.xml");
//            System.out.println("处理该文档的DomImplementation对象  = "
//                    + doc.getImplementation());
            // 得到文档名称为Student的元素的节点列表
//            NodeList nList = doc.getElementsByTagName("object");
//            Element node = (Element) nList.item(0);
//            NodeList nodeList = node.getElementsByTagName("aspect");
            NodeList nodeList = ((Element)doc.getElementsByTagName("object").item(0)).getElementsByTagName("aspect");
            for (int j = 0; j < nodeList.getLength(); j++) {
                Element n1 = (Element) nodeList.item(j);
                System.out.println(n1.getAttribute("name"));
                System.out.println(n1.getFirstChild().getNodeValue());
            } 

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    public static void queryXml() {
        try {
            // 得到DOM解析器的工厂实例
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory
                    .newInstance();
            // 从DOM工厂中获得DOM解析器
            DocumentBuilder dbBuilder = dbFactory.newDocumentBuilder();
            // 把要解析的xml文档读入DOM解析器
            Document doc = dbBuilder.parse("src/school.xml");
            System.out.println("处理该文档的DomImplementation对象  = "
                    + doc.getImplementation());
            // 得到文档名称为Student的元素的节点列表
            NodeList nList = doc.getElementsByTagName("Student");
            // 遍历该集合,显示结合中的元素及其子元素的名字
            for (int i = 0; i < nList.getLength(); i++) {
                Element node = (Element) nList.item(i);
                System.out.println("Name: "
                        + node.getElementsByTagName("Name").item(0)
                                .getFirstChild().getNodeValue());
                System.out.println("Num: "
                        + node.getElementsByTagName("Num").item(0)
                                .getFirstChild().getNodeValue());
                System.out.println("Classes: "
                        + node.getElementsByTagName("Classes").item(0)
                                .getFirstChild().getNodeValue());
                System.out.println("Address: "
                        + node.getElementsByTagName("Address").item(0)
                                .getFirstChild().getNodeValue());
                System.out.println("Tel: "
                        + node.getElementsByTagName("Tel").item(0)
                                .getFirstChild().getNodeValue());
            }

        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }
    }

    public static void testSample() {
        // TODO Auto-generated method stub
        // 创建一个DocumentBuilderFactory的对象
        DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
        // 创建一个DocumentBuilder的对象
        try {
            // 创建DocumentBuilder对象
            DocumentBuilder db = dbf.newDocumentBuilder();
            // 通过DocumentBuilder对象的parser方法加载books.xml文件到当前项目下
            Document document = db.parse("src/Students.xml");
            // 获取所有Student节点的集合
            NodeList StudentList = document.getElementsByTagName("Student");
            // 通过nodelist的getLength()方法可以获取StudentList的长度
            System.out.println("DOM解析开始...");
            // 遍历每一个Student节点
            for (int i = 0; i < StudentList.getLength(); i++) {
                System.out.println("开始解析第" + (i + 1) + "个学生");
                // 通过 item(i)方法 获取一个Student节点,nodelist的索引值从0开始
                Node book = StudentList.item(i);
                // 获取Student节点的所有属性集合
                NamedNodeMap attrs = book.getAttributes();
                // 遍历Student的属性
                for (int j = 0; j < attrs.getLength(); j++) {
                    // 通过item(index)方法获取Student节点的某一个属性
                    Node attr = attrs.item(j);

                    // 输出学生的属性名和属性值
                    System.out.println(attr.getNodeName() + ":"
                            + attr.getNodeValue());
                }
                NodeList childNodes = book.getChildNodes();
                // 遍历childNodes获取每个节点的节点名和节点值
                for (int k = 0; k < childNodes.getLength(); k++) {
                    // 区分出text类型的node以及element类型的node
                    if (childNodes.item(k).getNodeType() == Node.ELEMENT_NODE) {

                        // 输出子节点的属性名和属性值
                        System.out.println(childNodes.item(k).getNodeName()
                                + ":"
                                + childNodes.item(k).getFirstChild()
                                        .getNodeValue());

                    }

                }

            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("DOM解析结束...");
    }
}
<?xml version = "1.0" encoding = "utf-8"?>
<School>
    <Student>
        <Name>沈浪</Name>
        <Num>1006010022</Num>
        <Classes>信管2</Classes>
        <Address>浙江杭州3</Address>
        <Tel>123456</Tel>
    </Student>
    <Student>
        <Name>沈1</Name>
        <Num>1006010033</Num>
        <Classes>信管1</Classes>
        <Address>浙江杭州4</Address>
        <Tel>234567</Tel>
    </Student>
    <Student>
        <Name>沈2</Name>
        <Num>1006010044</Num>
        <Classes>生工2</Classes>
        <Address>浙江杭州1</Address>
        <Tel>345678</Tel>
    </Student>
    <Student>
        <Name>沈3</Name>
        <Num>1006010055</Num>
        <Classes>电子2</Classes>
        <Address>浙江杭州2</Address>
        <Tel>456789</Tel>
    </Student>
</School>

猜你喜欢

转载自www.cnblogs.com/kakaisgood/p/13178083.html
今日推荐