Dom解析器使用实例
dom解析器
dom全部文件读入到内存中,然后使用dom的api遍历所有数据,检索想要的数据,这种方式显然是一种比较消耗内存的方式,对于像手机这样的移动设备来讲,内存是非常有限的,所以对于比较大的XML文件,不推荐使用这种方式,但是Dom也有它的优点,它比较直观,在一些方面比SAX方式比较简单。在xml文档比较小的情况下也可以考虑使用dom方式
解析步骤:
1、创建并获取DOM解析器工厂对象
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
2、创建并获取DOM解析器对象
DocumentBuilder builder = factory.newDocumentBuilder();
3、创建并获取Document对象
Document document = builder.parse(inputStream);
4、获得文档的根元素,在下面的xml文件中根元素为courseInfo
Element root = document.getDocumentElement();
5、获取名称为student的子节点(只有一个)
Element studentElement = (Element) root.getElementsByTagName("student").item(0);
6、获取名称为courseList的子节点列表(有多个)
NodeList courseNodeList = root.getElementsByTagName("courseList");
7、遍历节点列表
for (int i = 0; i < nodeList.getLength(); i++) {//获得一个子节点Element element = (Element) nodeList.item(i);String courseName = element.getElementsByTagName("courseName").item(0).getFirstChild().getNodeValue();String courseId = element.getElementsByTagName("courseId").item(0).getFirstChild().getNodeValue();String teacherName = element.getElementsByTagName("teacherName").item(0).getFirstChild().getNodeValue();String teacherId = element.getElementsByTagName("teacherId").item(0).getFirstChild().getNodeValue();String room = element.getElementsByTagName("room").item(0).getFirstChild().getNodeValue();int day = Integer.parseInt(element.getElementsByTagName("day").item(0).getFirstChild().getNodeValue());int startWeek = Integer.parseInt(element.getElementsByTagName("startWeek").item(0).getFirstChild().getNodeValue());int totalWeeks = Integer.parseInt(element.getElementsByTagName("totalWeeks").item(0).getFirstChild().getNodeValue());int startSection = Integer.parseInt(element.getElementsByTagName("startSection").item(0).getFirstChild().getNodeValue());int totalSection = Integer.parseInt(element.getElementsByTagName("totalSection").item(0).getFirstChild().getNodeValue());int singleOrDouble = Integer.parseInt(element.getElementsByTagName("singleOrDouble").item(0).getFirstChild().getNodeValue());course = new Course(courseName,courseId,teacherName,teacherId,room,day,startWeek,totalWeeks,startSection,totalSection,singleOrDouble);courseList.add(course);}
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<courseInfo><courseList><courseId>000001</courseId><courseName>C语言</courseName><day>1</day><room>励耘楼</room><singleOrDouble>0</singleOrDouble><startSection>1</startSection><startWeek>1</startWeek><teacherId>100001</teacherId><teacherName>肖红</teacherName><totalSection>2</totalSection><totalWeeks>17</totalWeeks></courseList><courseList><courseId>000002</courseId><courseName>计算机算法</courseName><day>1</day><room>综合楼</room><singleOrDouble>0</singleOrDouble><startSection>5</startSection><startWeek>1</startWeek><teacherId>100002</teacherId><teacherName>陈红</teacherName><totalSection>2</totalSection><totalWeeks>17</totalWeeks></courseList><courseList><courseId>000003</courseId><courseName>C++面向对象编程语言</courseName><day>3</day><room>综合楼</room><singleOrDouble>0</singleOrDouble><startSection>5</startSection><startWeek>1</startWeek><teacherId>100003</teacherId><teacherName>杨平</teacherName><totalSection>2</totalSection><totalWeeks>17</totalWeeks></courseList><student><grade>2013</grade><major>计算机科学与技术</major><name>张三</name><schools>信息技术学院</schools><studentid>1301010005</studentid></student>
</courseInfo>
实体类
Student.java
public class Student {//学生姓名private String name;//学号private String studentid;//专业private String major;//学院private String schools;//年级private String grade;public Student(String name, String studentid, String major, String schools, String grade) {super();this.name = name;this.studentid = studentid;this.major = major;this.schools = schools;this.grade = grade;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getStudentid() {return studentid;}public void setStudentid(String studentid) {this.studentid = studentid;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}public String getSchools() {return schools;}public void setSchools(String schools) {this.schools = schools;}public String getGrade() {return grade;}public void setGrade(String grade) {this.grade = grade;}}
Course.java
public class Course {//课程名称private String courseName;//课程idprivate String courseId;//教室名称private String teacherName;//教室idprivate String teacherId;//教室private String room;//具体到星期几private int day;//开始周private int startWeek;//总周数private int totalWeeks;//开始上课节数private int startSection;//上课总周数private int totalSection;//单双周,单周为1,双周为2,部分为0private int singleOrDouble;public Course(String courseName, String courseId, String teacherName, String teacherId, String room, int day,int startWeek, int totalWeeks, int startSection, int totalSection, int singleOrDouble) {super();this.courseName = courseName;this.courseId = courseId;this.teacherName = teacherName;this.teacherId = teacherId;this.room = room;this.day = day;this.startWeek = startWeek;this.totalWeeks = totalWeeks;this.startSection = startSection;this.totalSection = totalSection;this.singleOrDouble = singleOrDouble;}public int getSingleOrDouble() {return singleOrDouble;}public void setSingleOrDouble(int singleOrDouble) {this.singleOrDouble = singleOrDouble;}public String getCourseName() {return courseName;}public void setCourseName(String courseName) {this.courseName = courseName;}public String getCourseId() {return courseId;}public void setCourseId(String courseId) {this.courseId = courseId;}public String getTeacherName() {return teacherName;}public void setTeacherName(String teacherName) {this.teacherName = teacherName;}public String getTeacherId() {return teacherId;}public void setTeacherId(String teacherId) {this.teacherId = teacherId;}public String getRoom() {return room;}public void setRoom(String room) {this.room = room;}public int getDay() {return day;}public void setDay(int day) {this.day = day;}public int getStartWeek() {return startWeek;}public void setStartWeek(int startWeek) {this.startWeek = startWeek;}public int getTotalWeeks() {return totalWeeks;}public void setTotalWeeks(int totalWeeks) {this.totalWeeks = totalWeeks;}public int getStartSection() {return startSection;}public void setStartSection(int startSection) {this.startSection = startSection;}public int getTotalSection() {return totalSection;}public void setTotalSection(int totalSection) {this.totalSection = totalSection;}}
CourseInfo.java
import java.util.ArrayList;
import java.util.List;public class CourseInfo {//学生private Student student;//课程列表private List<Course> courseList = new ArrayList<Course>();public CourseInfo(){}public CourseInfo(Student student, List<Course> courseList) {super();this.student = student;this.courseList = courseList;}public Student getStudent() {return student;}public void setStudent(Student student) {this.student = student;}public List<Course> getCourseList() {return courseList;}public void setCourseList(List<Course> courseList) {this.courseList = courseList;}}
xml.java
package com.example.administrator.httpconnectlogin.Tools;import com.example.administrator.httpconnectlogin.entity.Course;
import com.example.administrator.httpconnectlogin.entity.CourseInfo;
import com.example.administrator.httpconnectlogin.entity.Student;import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;/*** Created by Administrator on 2016/10/12.*/
public class XmlUtil {public static CourseInfo xmlToObject_CourseInfo(String xml){CourseInfo courseInfo = null;Student student = null;List<Course> courseList = new ArrayList<>();InputStream inputStream = new ByteArrayInputStream(xml.getBytes());//创建DOM解析器工厂DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();try {//创建DOM解析器DocumentBuilder builder = factory.newDocumentBuilder();//获取到了document对象//Document document = builder.parse(inputStream);Document document = builder.parse(inputStream);//获得文档的根元素Element root = document.getDocumentElement();//获得名称为student的元素节点(student只有一个节点)Element studentElement = (Element) root.getElementsByTagName("student").item(0);student = getStudentObject(studentElement);//得到文档中名称为courseList的元素的节点列表NodeList courseNodeList = root.getElementsByTagName("courseList");courseList =getCourseListObject(courseNodeList);courseInfo = new CourseInfo(student,courseList);} catch (ParserConfigurationException e) {e.printStackTrace();} catch (SAXException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}return courseInfo;}private static Student getStudentObject(Element element){String name = element.getElementsByTagName("name").item(0).getFirstChild().getNodeValue();String studentid = element.getElementsByTagName("studentid").item(0).getFirstChild().getNodeValue();String major = element.getElementsByTagName("major").item(0).getFirstChild().getNodeValue();String schools =element.getElementsByTagName("schools").item(0).getFirstChild().getNodeValue();String grade = element.getElementsByTagName("grade").item(0).getFirstChild().getNodeValue();Student student = new Student(name,studentid,major,schools,grade);return student;}private static List<Course> getCourseListObject(NodeList nodeList){List<Course> courseList = new ArrayList<>();Course course = null;for (int i = 0; i < nodeList.getLength(); i++) {//获得一个子节点Element element = (Element) nodeList.item(i);String courseName = element.getElementsByTagName("courseName").item(0).getFirstChild().getNodeValue();String courseId = element.getElementsByTagName("courseId").item(0).getFirstChild().getNodeValue();String teacherName = element.getElementsByTagName("teacherName").item(0).getFirstChild().getNodeValue();String teacherId = element.getElementsByTagName("teacherId").item(0).getFirstChild().getNodeValue();String room = element.getElementsByTagName("room").item(0).getFirstChild().getNodeValue();int day = Integer.parseInt(element.getElementsByTagName("day").item(0).getFirstChild().getNodeValue());int startWeek = Integer.parseInt(element.getElementsByTagName("startWeek").item(0).getFirstChild().getNodeValue());int totalWeeks = Integer.parseInt(element.getElementsByTagName("totalWeeks").item(0).getFirstChild().getNodeValue());int startSection = Integer.parseInt(element.getElementsByTagName("startSection").item(0).getFirstChild().getNodeValue());int totalSection = Integer.parseInt(element.getElementsByTagName("totalSection").item(0).getFirstChild().getNodeValue());int singleOrDouble = Integer.parseInt(element.getElementsByTagName("singleOrDouble").item(0).getFirstChild().getNodeValue());course = new Course(courseName,courseId,teacherName,teacherId,room,day,startWeek,totalWeeks,startSection,totalSection,singleOrDouble);courseList.add(course);}return courseList;}
}
Dom解析器使用实例相关推荐
- JAVA与DOM解析器基础 学习笔记
要求 必备知识 JAVA基础知识.XML基础知识. 开发环境 MyEclipse10 资料下载 源码下载 文件对象模型(Document Object Model,简称DOM),是W3C组织推荐的处理 ...
- php中html解析器,PHP Simple HTML DOM解析器
一直以来使用php解析html文档树都是一个难题.Simple HTML DOM parser 帮我们很好地解决了使用 php html 解析 问题.可以通过这个php类来解析html文档,对其中的h ...
- php 解析 标记,如何使用PHP-simple-HTML DOM解析器获取标记的属性
PHP Simple HTML DOM parser 要废弃网站数据,但不幸的是无法提取我想要的数据.我也试过用谷歌搜索文档,但没能解决这个问题.我想要废弃的代码结构是这样的. Some conten ...
- 极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser/有中文手册
极其简便的PHP HTML DOM解析器PHP Simple HTML DOM Parser,有中文手册,对于需要分析HTML代码dom结构的php开发者来说,是一个极其有用的函数库,使用Jquery ...
- XML DOM 解析器概述
大多数浏览器都内建了供读取和操作 XML 的 XML 解析器.解析器把 XML 转换为 JavaScript 可存取的对象(XML DOM). XML 解析器 XML DOM 包含了遍历 XML 树, ...
- python的网页解析器_Python网页解析器使用实例详解
python 网页解析器 1.常见的python网页解析工具有:re正则匹配.python自带的html.parser模块.第三方库BeautifulSoup(重点学习)以及lxm库. 2.常见网页解 ...
- java xml 查询_Java DOM解析器 - 查询XML文档
演示示例 这是需要我们查询的输入XML文件: Ferarri 101 Ferarri 201 Ferarri 301 Lamborgini 001 Lamborgini 002 Lamborgini ...
- java dom cdata_java – 通过DOM解析器从XML处理CDATA
我以前从未处理过XML,所以我不确定如何在XML文件中处理CDATA.我迷失在节点,父节点,子节点,nList等中. 谁能告诉我这些代码片段的问题是什么? 我的getTagValue()方法适用于除& ...
- php写html就错误500,php – 简单的html dom解析器返回错误500
我在这个例子中使用simple_html_dom.php库 但是我在类里面有错误500,当我在浏览器中输入url可以吗? 我在这个阵列中有一些vaules $result= Array ( [Aven ...
最新文章
- 当前安卓App加固到底该如何做到防篡改?
- POJ 2453 贪心应用
- ResNet在分别在Keras和tensorflow框架下的应用案例
- 正则表达式的基本语法[转]
- moodle平台安装及环境配置(包括安装过程详细截图)
- vlfeat工具包的MATLAB安装
- #FME#FME将TXT转成shape
- 丧心病狂!最新NLP模型的写作水平已突破次元壁
- [AC自动机]luoguP3966
- xshell6配色-保护您的眼睛
- 别让西药毁了凉茶!盒马牵手平安堂,能放心喝的凉茶来了
- TP 全系列调试通用参考说明
- 清华计算机类出国留学,清华大学的王牌专业及出国留学率.doc
- python爬虫爬取股票评论,调用百度AI进行语义分析, matlab观察股票涨跌和评论的关系
- android am pm常用的一些命令
- 记一次配置华为路由器DDNS(花生壳)动态域名解析
- 用计算机绘制阀体各零件步骤,UG10.0经典实例之液压球阀建模方法
- D3D字体-ID3DXFont[转载]
- 通用人工智能可行吗?组合泛化视角漫谈
- Windows 8: 将英文系统转换为中文
热门文章
- INE首届共识大会 | 白眉:一起向百万级领地主进军
- 北京各城区二手房数据分析+可视化
- node.js笔记(千锋kerwin老师同款)
- 子群,真子群,正规子群,真正规子群怎么打符号?
- /plus/list.php?tid= dedecms,织梦DedeCMS5.7全站实现伪静态的方法
- 五分钟带你玩转docker(三)全网最新最简单docker安装方式,楼主亲测
- CSS 的快乐:画一个可爱的三只小鸟 Button
- 蓝鸟中文编程2.7破解版
- 丹佛斯变频器al13故障_丹佛斯变频器十大常见故障分析及维修对策
- 主板超频特色技术大比拼!