目录
XML的特点和使用场景
XML文件的创建
XML的语法规则:
XML的标签规则:
XML的其他组成
什么是文档约束
XML VS HTML
什么是XML解析
两种解析方式
DOM常见的解析工具
使用Dom4J解析出XML文件
JSOUP解析
XML的特点和使用场景
- 一是纯文本,默认使用UTF-8编码;二时可嵌套的;
- 如果把XML内容存为文件,那么它就是一个XML文件
- XML的使用场景:XML内容经常被当成消息进行网络传输,或者作为配置文件用于存储系统的信息。
就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml
XML的语法规则:xml文件的后缀名为:.xml
文档声明必须时第一行
XML的标签规则:version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码
- 标签由一对尖括号和合法标识组成:
,必须存在一个根标签,有且只有一个 - 标签必须成对存在,又开始,有结束
- 特殊标签可以不成对,但是必须有结束标记
- 标签中可以定义属性,属性和标签名空格隔开,属性值必须使用引号:
- 标签需要正确的嵌套
XML的其他组成
张三
- XML文件中可以定义注释信息:
- XML文件中可以存在以下特殊字
什么是文档约束< < 小于
> > 大于
& & 和号
' ' 单引号
" " 引号
文档约束:是用来限定xml文件中的标签以及属性一个怎么写。
文档约束的分类
DTD
schema
XML文档约束-DTD的使用(了解)
需求:利用DTD文档约束,约束一个XML文件的编写
分析:
1.编写DTD约束文档,后缀必须是.dtd
2.在需要编写的XML文件中导入该DTD约束文档
3.按照约束的规定编写XML文件的内容
XML文档约束-schema的使用(了解)
1.schema可以约束具体的数据类型,约束能力上更强大。
2.schema本身也是一个xml文件,本身也受到其他约束文件的要求,所以编写的更加谨慎
需求:利用schema文件约束,约束一个XML文件的编写
分析:
1.编写schema约束文档,后缀必须是.xsd,具体的形式到代码中观看
2.在需要编写的XML文件中导入该schema约束文档
3.按照约束内容编写XML文件的标签
XML VS HTML都是w3c这个组织下的两个产品, 最主要的功能就是储存和数据传输
HTML 现广泛用于web方面
标签固定的且有语义(标签名称不能自定义)
语法不严格(不写头标签也没有影响)
XML 现广泛用于数据配置方面
标签完全自定义(与HTTP不同)
语法非常严格
什么是XML解析使用程序读取XML中的数据
两种解析方式DOM解析
SAX解析
- DOM解析
- 解析XML时 生成一个DOM(document)树我们就可以对树中的内容进行任意的访问和修改
- 缺点:如果文档中的内容过多或层次过多,则生成出来的树也就越大,内存占用率也就越高
- 优点:任意访问和修改(可增删)
- SAX解析
- 针对于DOM解析而言是一种更快速、更高效的解析方式,主要用树遍历算法来进行节点访问。需要到哪里,只需要遍历该路径上的节点即可。
- 缺点:并不知道生成树的全貌, 所有不能增删(边读边解析、不能确定下面还有没有元素)
- 优点:更快速、更高效、省内存
需求:使用Dom4J把一个XMl文件的数据进行解析
分析:
- 下载Dom4J框架,官网下载(dom4j),下载.jar文件
- 在项目中创建一个文件加:lib
- 将dom4j-2.1.1.jar文件复制到lib文件中
- 在jar文件上点击右键,选择Build Path -> 点击 Add path...
- 在类中导包使用
Dom4J解析XML-得到document对象
SAXReader类
document类
Dom4J中的常用方法
代码演示:
在项目中创建一个xml文件
解析编码:
import java.io.File; import java.util.List; import org.dom4j.Attribute; import org.dom4j.document; import org.dom4j.documentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; public class Dom4JDemo { public static void main(String[] args) throws documentException { //创建DOM4J解析器对象 SAXReader reader = new SAXReader(); //向解释器对象传入一个需要被解析的xml文件 //document就是xml文件的对象 document document = reader.read(new File("users.xml")); //获取xml文件中的根节点元素 Element root = document.getRootElement(); //此处根节点root=users //获取root元素下的所有 Listelements = root.elements(); //遍历节点中的的元素 for (Element element1 : elements) { //遍历每一个节点的元素 // System.out.println(element.asXML()); //获取当前接节点的属性列表 输出: id:1 id:2 id:3 List att = element1.attributes(); // for (Attribute attbu : att) { // System.out.println(attbu.getName() + ":" + attbu.getValue()); // } //获取指定属性值 System.out.println("id"+":" + element1.attributevalue("id")); //获取所有子元素 List ele = element1.elements(); for (Element elet : ele) { System.out.println(elet.getName() + ":" + elet.getText()); } System.out.println("=========="); //获取指定元素 System.out.println("name" + ":" + element1.element("name").getText()); } } }
运行结果比较多,这里就不展示了,感兴趣的朋友可以自己运行以下。
JSOUP解析 jsoup解析的特点:
不仅可以解析xml,也可以解析html
按照名称来获取我们的元素
-
下载JSOUP框架,下载地址(jsoup: Java HTML parser, built for HTML editing, cleaning, scraping, and XSS safety)
- 其余安装步骤xDmo4J一样
- 将其放入项目的lib文件中
使用JSOUP解析:
直接上代码:
import java.io.File; import java.io.IOException; import org.jsoup.nodes.document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; import org.jsoup.Jsoup; public class JSOUPTest { public static void main(String[] args) throws IOException { //1.获取xml文件的document对象 //注意:此处document类导入的是org.jsoup.nodes.document,不敢导入Dom4J包下的 document document = Jsoup.parse(new File("users.xml"), "utf-8"); //获取单一一个标签元素对象,只能通过id属性来获取在xml/html中,每一个标签都可以定义id属性但是值不能一样 // Element elementById = document.getElementById("1"); // //将id为“1”的标签的所有内容都打印出来了,(包括子标签的内容) // System.out.println(elementById); //获取所有名称为user的标签对象 elementsByTag本质上是一个列表 Elements elementsByTag = document.getElementsByTag("user"); //打印user的标签标签下的所有元素,两种获取方式 //1.将elementsByTag看成一个列表遍历输出 // for (Element element : elementsByTag) { // System.out.println(element); // } //2.直接输出 System.out.println(elementsByTag); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)