演示使用DOM技术如何解析指定XML

原创 2015年11月17日 23:19:02
import java.io.FileInputStream;
import java.io.InputStream;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

/**
 * 演示使用DOM技术如何解析指定XML
 *
 * @version 1.0
 *
 *
 */
public class DOMParseXML {
    public static void main(String[] args) {
        // 通过DocumentBuilderFactory抽象类的工厂方法newInstance()创建DOM解析器的工厂实例
        DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

        try {
            // 通过DocumentBuilderFactory实例的静态方法newDocument()得到DOM解析器
            DocumentBuilder buider = factory.newDocumentBuilder();
            // 把需要解析的XML文档转化为输入流,以便DOM解析器能够进行解析
            InputStream is = new FileInputStream("E://examGrade.xml");
            // 解析XML文档的输入流,得到一个Document
            Document doc = buider.parse(is);
            // 通过Document得到XMl文档的根节点
            Element root = doc.getDocumentElement();
            // DOM技术采用NodeList存放Node的所有子节点,所以我们可以使用循环的方式得到节点下的所有子节点
            NodeList exams = root.getChildNodes();
            if (exams != null) {
                System.out.println("解析结果为:\n");
                System.out.println("\t 课程\t学生姓名\t 成绩");
                // 使用DOM技术解析XMl文档-遍历子节点
                System.out.println(exams.getLength()+"\t");
                for (int i = 0; i < exams.getLength(); i++) {
                    Node exam = exams.item(i);
                    if (exam.getNodeType() == Node.ELEMENT_NODE) {
                        String courseName = exam.getNodeName();
                        // 输出课程名
                        //记得转义字符"/n"也算字节点
                        System.out.print(courseName + "\t");
                        for (Node node = exam.getFirstChild(); node != null; node = node
                                .getNextSibling()) {
                            if (node.getNodeType() == Node.ELEMENT_NODE) {
                                if (node.getNodeName().equals("examineeName")) {
                                    String stuName = node.getFirstChild()
                                            .getNodeValue();
                                    // 输出学生姓名
                                    System.out.print(stuName + "\t");
                                }
                                if (node.getNodeName().equals("grade")) {
                                    String grade = node.getFirstChild()
                                            .getNodeValue();
                                    // 输出学生成绩
                                    System.out.println(grade + "\t");
                                }
                            }
                        }
                    }

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

    }
}

版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

XML - JAXP技术 - DOM解析

DOM解析的基本思路:     1、将整个XML文件一次性读入内存     2、将整个XML看做一棵树     3、XML中的每一个标签,属性,文本都看做是树上的一个结点     4、然后可以...

DOM 解析 XML

Java 中的 DOM 接口简介: JDK 中的 DOM API 遵循 W3C DOM 规范,其中 org.w3c.dom 包提供了 Document、DocumentType、Node、NodeLi...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

Android演示使用DOM解析xml文件

Android下解析xml文件的三种方式分别是:SAX、DOM、PULL,本次主要讲解如何使用DOM方式: 这里使用的测试xml文件内容如下: 0 FreeDemo 1 ...

JSTL演示如何使用

测试源码 <%@ taglib prefix="c" uri="http:/

用DOM解析XML

示例一 package com.shengsiyuan.xml.dom; import java.io.File; import javax.xml.parsers.Docu...

XML解析二 使用DOM解析XML

DOM是一种用于XML文档的对象模型,可用于直接访问XML文档的各个部分。在DOM中,文档被模拟成树状,通常,DOM比SAX更容易掌握,因为它没有涉及回调和复杂的状态管理,但是,DOM的实现是将所有X...

XML解析技术和使用Jaxp对xml文档进行dom解析

用dom和sax对xml文档进行解析,可以使用已开发的xml解析开发包,我们直接调用即可。xml解析开发包有:Jaxp(最差)、Jdom(一般)、dom4j(最好)。 JAXP: 定义一个xml文档...

XML编程-DOM

XML编程-DOM XML解析技术     xml解析技术常用的有两类:dom解析和sax解析。 dom:(Document Object Model, 即文档对象模型)是W3C组织推荐的处理XM...

XML入门学习笔记之XML解析技术---DOM解析

一.DOM

使用dom解析xml

这里是一个根据xml数据定时上传数据的案例,每天抽取三条信息随机发送给不同的三个用户,然后随机发送账户给不同的三个交易团队,这里用到了quartz。 下面是xml的整体结构和部分模拟数据 ...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)