xml文件的解析过程详解

student.xml 文件展示:

 <?xml version="1.0" encoding="utf-8" ?>
<person>
   <student id=‘1‘>
        <name>余超</name>
        <sex>男</sex>
        <desc>一个执着而又天真的孩子</desc>
   </student>
     <student id=‘2‘>
        <name>马靖</name>
        <sex>女</sex>
        <desc>一个特别难追求的女孩子</desc>
   </student>
</person>

Student实体类的展示:其作用就是用于临时保存xml文件中的数据到属性中

package net.nyist.xmlparse.domain;

import java.io.Serializable;

/**
 * @author yuchao
 *
 * @school 南阳理工软件学院移动设备应用与开发移动四班
 *
 * @email [email protected]
 *
 * @time 2014年9月30日 下午10:52:47
 */

@SuppressWarnings("serial")
public class Student implements Serializable {

    private int id;
    private String name;
    private String sex;
    private String desc;

    public Student() {
    }

    public Student(int id, String name, String sex, String desc) {
        this.id = id;
        this.name = name;
        this.sex = sex;
        this.desc = desc;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getDesc() {
        return desc;
    }

    public void setDesc(String desc) {
        this.desc = desc;
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + ", sex=" + sex
                + ", desc=" + desc + "]";
    }
}

方法一:通过DOM来解析XML文件

package net.nyist.xmlparse.parse.dom;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

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

import net.nyist.xmlparse.domain.Student;

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

/**
 * @author yuchao
 *
 * @school 南阳理工软件学院移动设备应用与开发移动四班
 *
 * @email [email protected]
 *
 * @time 2014年9月30日 下午11:12:57
 */

public class DocumentBuilderFactoryDemo {

    public static void main(String[] args) {
        /** 首先得到:得到 DOM 解析器的工厂实例 */
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory
                .newInstance();
        List<Student> students = new ArrayList<Student>();
        try {
            /** 然后从 DOM 工厂获得 DOM 解析器 */
            DocumentBuilder documentBuilder = documentBuilderFactory
                    .newDocumentBuilder();
            InputStream is = DocumentBuilderFactoryDemo.class.getClassLoader()
                    .getResourceAsStream("student.xml");
            Document document = documentBuilder.parse(is);
            /** 得到 XML 文档的根节点 */
            Element element = document.getDocumentElement();
            NodeList nodeList = element.getElementsByTagName("student");
            Student student = null;
            for (int i = 0; i < nodeList.getLength(); i++) {

                Node node = nodeList.item(i);
                int id = Integer.parseInt(node.getAttributes()
                        .getNamedItem("id").getNodeValue());
                String nameValue = "";
                String sexValue = "";
                String descValue = "";

                if (node.hasChildNodes()) {

                    NodeList childNodes = node.getChildNodes();
                    for (int j = 0; j < childNodes.getLength(); j++) {
                        Node node2 = childNodes.item(j);
                        if ("name".equals(node2.getNodeName())) {
                            nameValue = node2.getFirstChild().getTextContent();
                        } else if ("sex".equals(node2.getNodeName())) {

                            sexValue = node2.getFirstChild().getTextContent();
                        } else if ("desc".equals(node2.getNodeName())) {
                            descValue = node2.getFirstChild().getTextContent();
                        }
                    }
                    student = new Student(id, nameValue, sexValue, descValue);
                    students.add(student);
                }
            }

        } catch (Exception e) {
            e.printStackTrace();
        }
        for (int i = 0; students != null && students.size() > 0
                && i < students.size(); i++) {
            System.out.println(students.get(i));
        }
    }
}
				
时间: 2024-10-13 03:22:36

xml文件的解析过程详解的相关文章

Android 5.0 system_fonts.xml文件的解析过程

Android 5.0 system_fonts.xml文件的解析过程 首先看看看5.0 中familyset version="22" 的格式 20 <family name="sans-serif"> 21 <font weight="100" style="normal">Roboto-Thin.ttf</font> 22 <font weight="100"

(转)DNS解析过程详解

DNS解析过程详解 原文:http://blog.csdn.net/crazw/article/details/8986504 先说一下DNS的几个基本概念: 一. 根域 就是所谓的".",其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的

转:VC解析XML文件-CMarkup的使用详解

本篇文章是对VC解析XML文件-CMarkup的使用进行了详细的分析介绍,需要的朋友参考下 VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等. 据说tinyXML很好,可能字符集问题,我编译不了. 所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便. CMarkup下载地址:http://www.firstobject.com/ 发现网上有方法很法,我就摘下来了 复制代码 代码如下: //----------UserInfo.xml--

外部网站DNS解析过程详解

对外部网站的DNS解析全过程图解(排除ISP缓存方面,只是原理) 如下图: 上图是自制,如有错误地方,还请评论指点,谢谢! 以下为DNS详解,转载自百度文库! 平时我们进行域名解析所用到的DNS服务器,是面对客户的一线服务器. DNS服务器是(Domain Name System或者Domain Name Service)域名系统或者域名服务,域名系统为Internet上的主机分配域名地址和IP地址. 用户使用域名地址,该系统就会自动把域名地址转为IP地址.域名服务是运行域名系统的Interne

Tomcat中server.xml文件内各节点详解

由于 Tomcat 基于 Java,实际上在各种 Linux 发行版里的配置方法都大同小异,只是我看见在 Arch Linux 环境里搭建 Tomcat 的文章比较少,所以在 Arch Linux 实践一遍然后得出此文.此文假设你对 Tomcat 并不十分了解,主要笔墨将会在 Tomcat 的配置之上. 1.安装 Java JDK 在 Arch Linux 的 extra 源里有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安装,至于选用哪一个可以视具体情况而定.

转载:DNS解析过程详解

2015-09-20 此好文是转载,如有侵权联系我,立马删掉 DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主

002.DNS解析过程详解

先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机. 具体的镜像分布可以参考维基百科.这些主机的内容都

DNS解析过程详解

先说一下DNS的几个基本概念: 一. 根域 就是所谓的“.”,其实我们的网址www.baidu.com在配置当中应该是www.baidu.com.(最后有一点),一般我们在浏览器里输入时会省略后面的点,而这也已经成为了习惯. 根域服务器我们知道有13台,但是这是错误的观点. 根域服务器只是具有13个IP地址,但机器数量却不是13台,因为这些IP地址借助了任播的技术,所以我们可以在全球设立这些IP的镜像站点,你访问到的这个IP并不是唯一的那台主机. 具体的镜像分布可以参考维基百科.这些主机的内容都

转 Tomcat中server.xml文件内各节点详解

由于 Tomcat 基于 Java,实际上在各种 Linux 发行版里的配置方法都大同小异,只是我看见在 Arch Linux 环境里搭建 Tomcat 的文章比较少,所以在 Arch Linux 实践一遍然后得出此文.此文假设你对 Tomcat 并不十分了解,主要笔墨将会在 Tomcat 的配置之上. 1.安装 Java JDK 在 Arch Linux 的 extra 源里有 jdk7-openjdk 和 openjdk6,可以直接使用 pacman 安装,至于选用哪一个可以视具体情况而定.