XML解析有两种方式:SAX,DOM

SAX:simple api for xml,解析XML的简单API,特点是内存占用少,速度快,但由于是逐行扫描式解析,对整体结构没有把控,不能修改XML内容
*
DOM:document object model,文档对象模型。特点是解析XML时会将XML结构建成 一棵树然后通过遍历树的形式解析xml内容,由于对整体结构有把控,可修改XML内容,但是由于会内建整棵树,因此内存占用多,速度慢。
W3C推荐使用DOM解析
*

  • DOM4J dom for java

使用dom解析XML的步骤

1.创建SAXReader
2.使用SAXReader读取XML文档并生成Document对象(内建树的过程)
3.获取根元素
4.通过根元素开始按照XML的结构逐级获取子元素以达到遍历XML的目的

public class ParseXmlDemo {public static void main(String[] args) {/** 使用dom解析XML的步骤* 1.创建SAXReader* 2.使用SAXReader读取XML文档并生成Document对象(内建树的过程)* 3.获取根元素* 4.通过根元素开始按照XML的结构逐级获取子元素以达到遍历XML的目的*/try{//1SAXReader reader = new SAXReader();//2Document doc = reader.read(new File("./emplist.xml"));/*3获取根元素* Element 类的每一个实例用于表示XML文档中的一个元素(一堆标签)* 通过Element可以获取表示的这对标签的相关信息,常有操作:* * String geyName()* 获取当前标签的名字* * String getText()* 获取当前标签中的文本* * Element element(String name)* 获取当前标签下指定名字的子标签* * List elements()* 获取当前标签下的所有子标签* * List element(String name)* 获取当前标签下的所有同名子标签(指定的名字)*/Element root = doc.getRootElement();System.out.println(root.getName());//输出根标签的名字/** 将emplist.xml文件中的所有员工信息读取出来并存入一个集合*/List<Emp> emplist = new ArrayList<>();//从List标签下获取所有的emp标签List<Element>list = root.elements("emp");System.out.println(list.size());//遍历每一个<emp>标签for(Element e:list){//获取该员工的名字//1.先获取<emp>标签下名为<name>的子标签Element nameEle = e.element("name");//2.获取标签中间文本String name = nameEle.getTextTrim();System.out.println(name);//获取年龄int age = Integer.parseInt(
//                      e.element("age").getTextTrim()//elementTextTrim方法是获取当前标签下指定名字子标签中间的文本e.elementTextTrim("age"));System.out.println(age);//获取性别String gender = e.elementTextTrim("gender");//获取工资int salary  = Integer.parseInt(e.elementTextTrim("salary"));//获取<emp>标签中的属性id的值
//              Attribute attr = e.attribute("id");
//              int id = Integer.parseInt(
//                      attr.getValue()
//              );
//              int id = Integer.parseInt(e.attribute("id").getValue());//attributeValue方法用来获取当前标签下指定名字的属性对应的值int id = Integer.parseInt(e.attributeValue("id"));Emp emp = new Emp(id,name,age,gender,salary);emplist.add(emp);}System.out.println("解析完毕");for(Emp e:emplist){System.out.println(e);}}catch(Exception e){e.printStackTrace();}}}

JAVA SE学习day14:解析XML相关推荐

  1. JAVA SE学习day14:XML语言

    XML语言 一.XML语言 1.什么是XML语言? 2.XML语言用语解决什么类型的问题? 3.xml语言常见应用 二.XML语法 (一).文档证明 (二).元素 (三).属性 (四).注释 (五). ...

  2. java解析xml实例_在java中使用dom解析xml的示例分析

    本篇文章介绍了,在java中使用dom解析xml的示例分析.需要的朋友参考下 dom是个功能强大的解析工具,适用于小文档 为什么这么说呢?因为它会把整篇xml文档装载进内存中,形成一颗文档对象树 总之 ...

  3. JAVA中利用DOM解析XML文档

    JAVA中利用DOM解析XML文档 package org.sws.utils; import java.io.File;import java.io.IOException; import java ...

  4. java使用SAX接口解析xml文件

    全栈工程师开发手册 (作者:栾鹏) java教程全解 java使用SAX接口解析xml文件.实现解析类,从xml解析开始到结尾,每一步均会触发对象的重载函数. 测试代码,将book1.xml改成你自己 ...

  5. java使用xpath解析xml,java如何使用xpath解析xml

    java如何使用xpath解析xml 发布时间:2020-12-08 12:28:00 来源:亿速云 阅读:60 作者:小新 这篇文章给大家分享的是有关java如何使用xpath解析xml的内容.小编 ...

  6. 第一阶段Java SE学习概述

    Java SE学习概述 Java SE 学习分为五个阶段 第一部分:基础程序设计: 第二部分:面现象对象编程: 第三部分:Java SE 高级应用: 第四部分:JavaSE 新特性: 第五部分:MyS ...

  7. Java SE 学习记录——进阶版11

    @学习记录 开始学习Java 遵从同学的指导,从Java se开始学习 黑马的JavaSE零基础入门[网络编程] 第一章 网络编程入门 1.1 软件结构 22-02 软件结构 1.2 网络通信协议 2 ...

  8. JAVA SE学习day_03:包装类、文件操作——file

    一.包装类 包装类是为了解决基本类型不能直接参与面向对象开发的问题,实际就是将基本类型以"对象"的形式表示 Integer 1.1基本类型转换为对应的包装类(引用类型) int i ...

  9. XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 查找校验xml文件中相同的节点属性值 java遍历文件夹解析XML

    XML解析 (JAVA解析xml文件)java+Dom4j+Xpath xml文件解析根据子节点得到父节点 以及查找xml文件中相同的节点属性值 项目背景:这是本人实习中所碰到的项目,当时感觉很棘手, ...

最新文章

  1. poj2352(树状数组)
  2. ACE proactor example
  3. [云炬创业基础笔记]第一章创业环境测试3
  4. HDU - 1796 How many integers can you find(容斥原理)
  5. 如何启用 SAP Spartacus Guest checkout
  6. Swoole 源码分析——Server模块之初始化
  7. labelme2coco问题:TypeError: Object of type 'int64' is not JSON serializable
  8. 艾拉物联CEO :物联网时代的到来让安全问题显得尤为突出
  9. 地平线开源轻量级、有效可变组卷积的人脸识别网络VarGFaceNet
  10. 《流畅的python》之 设计模式, 装饰器
  11. mpacc和计算机硕士,考MPAcc还是工作?读研三年VS工作三年对比!
  12. 直击面试,聊聊 GC 机制
  13. j和jk是有区别的_科普向,大家都说jk,jk是什么意思呢?
  14. 计算机硬件系统维护经验与体会,计算机操作系统维护与优化的实训报告心得体会.docx...
  15. 【扫盲】硬盘接口『 SATA 、 mSATA 、 m.2 ( NGFF )、PCI-E ( PICe 、 PCI Express ) 』及其协议 『 NVMe 、 AHCI 』
  16. uniapp ui框架——uView 及其可视化搭建工具
  17. TestLink汉化操作
  18. 设计水杯,门锁的测试用例
  19. python 正则表达式 匹配身份证号
  20. 【电机/控制理论】DTC(Direct Torque Control)直接转矩控制

热门文章

  1. Part10 泛型程序设计与C++标准模板库 10.1泛型程序设计及STL的结构
  2. APPlication,Session和Cookie的区别
  3. exec函数组六个函数的用法和区别
  4. Silverlight 2 数据绑定演示程序(附源代码下载)
  5. 解决nodejs环境下端口号被占用的方法
  6. Ubuntu x64安装Android studio 全部步骤和问题解决
  7. 如何编写与非贪婪匹配的正则表达式? [重复]
  8. 在node.js中复制文件的最快方法
  9. 在1 MB RAM中排序100万个8位数字
  10. 何时将空间编码为加号(+)或%20?