java 中的xml操作
XML
全称为Extensible Markup Language
可扩展标记语言。一般作为配置文件,可在网络中传输。
和html的区别是,它的语法规定更加严格,同时,xml中的标签都是自定义的,而html中的标签是预定义的。
xml一般用来存储数据,而html一般用来展示数据。
xml文档的第一行必须为形如<?xml 属性列表 ?>
的文档声明。必须要有一个根标签,标签必须正确关闭。同时和html不同xml的标签区分大小写。属性值必须使用单双引号包裹。
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
一般xml文档声明格式如上,但是standalone一般不写,该属性的含义是是否依赖其他文件,取值只有yes/no。version属性表示采取的xml版本,常用的是1.0版本,encoding表示此文档内容采用的编码格式。
当需要原样展示数据时,可以将内容放到CDATA区中。
约束
约束定义了xml的书写规则。
通常有两种定义约束的方式:
- DTD 该方式使用较为简单
- Schema 该方式使用较为复杂,当约束更加详细
使用DTD约束有两种方式,一种时将约束规则定义在xml文档中。
另外一种时将DTD规则定义在外部的DTD文件中。
-
使用本地DTD规则
<!DOCTYPE 根标签名 SYSTEM "dtd文件位置">
-
使用网络DTD规则
<!DOCTYPE 根标签名 PUBLIC "dtd文件名" "dtd文件URL">
操作xml文档
操作xml文档,有两种行为:
-
解析 也就是将xml数据读入到内存
-
写入 也就是修改xml数据
xml解析方式
xml文档有两种解析方式:
-
DOM 方式 将标记语言一次性加载新内存,在内存中形成一颗DOM树
优点:操作方便,可以对文档进行crud的所有操作
缺点:消耗内存
-
SAX 逐行读取,基于事件驱动
优点:内存消耗小
缺点:只能读取,不能增删改
xml常见解析器
xml常见解析器有如下几种:
-
JAXP:SUN公司提供的解析器,支持dom和sax两种实现 劣质
-
DOM4J:
-
jsoup:HTML解析器,解析xml无问题 推荐
-
PULL:Android系统内置解析器,sax方式
Jsoup
本来是用来解析html文档的解析器,但是同为标记语言,解析xml也没有问题。
使用parse静态方法解析xml文档,返回一个Document对象。
Document对象
Document 文档对象,代表内存中的dom树 继承自Element。
Elements 对象
继承自ArrayList<Element>
类,相当于Element对象的容器。通常在选择某些节点是返回该对象。
Element 对象
该对象相当于一个标签节点。是一个较为基础的对象,Document类同样继承自该类。
常用函数函数有:
getElementsByTag 根据标签名称返回Elements
getElementsByAttribute 根据属性名称获取元素对象
getElementsByAttributeValue 根据属性值获取元素对象
attr 获取属性值
text 获取标签内的文本内容(包含子标签内的文本内容)
html 获取html/xml内容
Node对象
Node对象,为Element的基类
快捷选择方式
select CSS选择器方式
XPath xml路径语言,用于在xml中查询信息。
使用jsoupXpath需要额外的jar包
原文地址:https://www.cnblogs.com/freesfu/p/13855218.html
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- pandas+PyQt5轻松制作数据处理工具
- Python高效编程之88条军规(1):编码规范、字节序列与字符串
- 这是一份 pip 常用命令小结~
- 太震撼了,我用python画出全北京的公交线路动图
- 小伙Python爬虫并自制新闻网站,太好玩了
- TRTC Android端开发接入学习之视频会议(八)
- MySQL锁都分不清,怎么面试进大厂?
- Kubernetes Controller高可用诡异的15mins超时
- 这几项超好用的云开发扩展能力,别说你还不知道!
- Ubuntu上一键卸载安装mysql脚本
- Python-批量修改图片全部颜色,批量修改图片的指定颜色,马甲包一键换主题UI
- 【SpringBoot DB 系列】h2databse 集成示例 demo
- MySQL 案例:analyze,慢查询,与查询无响应
- 万字图解Java多线程
- 金九银十要来了?不要慌,这些Android BAT高级面试题刷一刷