XML要点总结

Posted --believe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了XML要点总结相关的知识,希望对你有一定的参考价值。

XML可扩展标记语言

1.概述

1.概念

XML(Extensible Markup Language可拓展标记语言)

2.功能

存储数据,一般用于做配置文件,或者在网络中传输(通常用json文件)

3.XML和html区别

  1. xml标签是自定义的,所以需要有约束文件。
  2. xml的语法严格,html语法松散
  3. xml主要用于存储数据,html展示数据

4.语法

  • 文档后缀名xml
  • 第一行<?xml version='1.0' encoding='utf8'?>是文档声明
  • xml中有且仅有一个根标签
  • 属性值要用(单双)引号引起来
  • 区分大小写

5.快速入门

<?xml version='1.0' ?>
		<users>
			<user id='1'>
				<name>zhangsan</name>
				<age>23</age>
				<gender>male</gender>
				<br/>
			</user>
			
			<user id='2'>
				<name>lisi</name>
				<age>24</age>
				<gender>female</gender>
			</user>
		</users>

6.主要部分

1.文档声明

1.格式

<?xml 属性列表 ?>

2.属性列表

  • version:版本号,一般用1.0
  • encoding:编码方式。
  • standalone:是否独立,yes 或者 no用于表示是否依赖其他文件

2.属性

id值是唯一的

2.约束:规定XML文档的书写诡诈

1.要求

  • 能够在xml中引入约束文档
  • 能够简单读懂约束文档

2.分类

1.DTD:Document Type Define,简单的文档类型约束技术

1.将约束规则引入xml文件中两种方式

  • 本地:<!DOCTYPE 根标签名 SYSTEM "文件位置">
  • 网络:<!DOCTYPE 根标签名 PUBLIC"文件位置">

2.快速入门

<?xml version="1.0" encoding="UTF-8" ?>
<!--从外部引入文档类型定义-->
<!--<!DOCTYPE students SYSTEM "student.dtd">-->
<!--内部定义文档类型定义-->
<!DOCTYPE students [
        <!ELEMENT students (student*) > <!--表示students标签下student标签可以无数个-->
        <!ELEMENT student (name,age,sex)><!--表示student下标签有name、age、sex-->
        <!ELEMENT name (#PCDATA)><!--表示name类型为parse character data类型-->
        <!ELEMENT age (#PCDATA)>
        <!ELEMENT sex (#PCDATA)>
        <!ATTLIST student number ID #REQUIRED><!--表示属性列表,student标签的number属性是唯一的(iD),且必须的(REQUIRED)-->
        <!ENTITY msg "hello"> <!-- 表示定义一个实体引用,可以直接用msg表示"hello" -->
        ]>
<students>
	<student number="first">
		<name>张三</name>
		<age>12</age>
		<sex></sex>
	</student>
	<student number="second">
		<name>李四&msg;</name>
		<age>12</age>
		<sex></sex>
	</student>


</students>

2.Schema:略微复杂的xml文档约束技术

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 
	1.填写xml文档的根元素
	2.引入xsi前缀.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	3.引入xsd文件命名空间.  xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
	4.为每一个xsd约束声明一个前缀,作为标识  xmlns="http://www.itcast.cn/xml" 
	
	
 -->

<students   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns="http://www.itcast.cn/xml"
            xsi:schemaLocation="http://www.itcast.cn/xml  student.xsd"
>
<!--上面表示引入约束文件-->
    <!--
    第一句表示引入w3cschool定义的命名空间,并且取别名xsi
    第三句(先看第三句)表示该xml文件引入本地的xsd约束文件student.xsd(使用w3cschool定义的命名空间xsi下schemaLocation命令),并且用别名http://www.itcast.cn/xml代替
    第二句表示命名空间http://www.itcast.cn/xml不在标签前面加前缀,默认是该命名空间如students标签未加前缀就表示该命名空间。

    -->
 	<student number="heima_0001">
 		<name>tom</name>
 		<age>18</age>
 		<sex>male</sex>
 	</student>
		 
 </students>

3.解析

1.方式

  • DOM

    将标记语言一次性加载进内存形成DOM树。因为比较占内存,所以一般用于PC端

  • SAX

    逐行读取,是基于事件驱动的,一般用于手机端,因为内存小。

2.XML解析器JSOUP

1.快速入门

1.步骤

  1. 导入jsoup的jar包
  2. 获取document对象
  3. 获取标签Element对象
  4. 获取数据

2.代码

 String path = JsoupDemo1.class.getClassLoader().getResource("student.xml").getPath();
	        //2.2解析xml文档,加载文档进内存,获取dom树--->Document
	        Document document = Jsoup.parse(new File(path), "utf-8");
	        //3.获取元素对象 Element
	        Elements elements = document.getElementsByTag("name");
	
	        System.out.println(elements.size());
	        //3.1获取第一个name的Element对象
	        Element element = elements.get(0);
	        //3.2获取数据
	        String name = element.text();
	        System.out.println(name);

2.主要对象使用

1.Document

Jsoup静态方法parsexml文件获取

2.Element

通过getElementByxx获取,下面也会介绍快捷的方式select获取xpath获取

3.获取属性值

String attr(String key)

4.获取文本

  • string text()
  • string html()

3.快捷查询1selector

  • select(String cssQuery),就是css中定位元素的方法
  • 参考文档中的Selector类中的方法

4.快捷查询2xpath

  • 需要导入xpath对应的jar包

  • new JXDocument对象,参数为jsoup获取的document对象

  • 代码

    //1.获取student.xml的path
    		        String path = JsoupDemo6.class.getClassLoader().getResource("student.xml").getPath();
    		        //2.获取Document对象
    		        Document document = Jsoup.parse(new File(path), "utf-8");
    		
    		        //3.根据document对象,创建JXDocument对象
    		        JXDocument jxDocument = new JXDocument(document);
    		
    		        //4.结合xpath语法查询
    		        //4.1查询所有student标签
    		        List<JXNode> jxNodes = jxDocument.selN("//student");
    		        for (JXNode jxNode : jxNodes) 
    		            System.out.println(jxNode);
    		        
    		
    		        System.out.println("--------------------");
    		
    		        //4.2查询所有student标签下的name标签
    		        List<JXNode> jxNodes2 = jxDocument.selN("//student/name");
    		        for (JXNode jxNode : jxNodes2) 
    		            System.out.println(jxNode);
    		        
    		
    		        System.out.println("--------------------");
    		
    		        //4.3查询student标签下带有id属性的name标签
    		        List<JXNode> jxNodes3 = jxDocument.selN("//student/name[@id]");
    		        for (JXNode jxNode : jxNodes3) 
    		            System.out.println(jxNode);
    		        
    		        System.out.println("--------------------");
    		        //4.4查询student标签下带有id属性的name标签 并且id属性值为itcast
    		
    		        List<JXNode> jxNodes4 = jxDocument.selN("//student/name[@id='itcast']");
    		        for (JXNode jxNode : jxNodes4) 
    		            System.out.println(jxNode);
    		        
    

以上是关于XML要点总结的主要内容,如果未能解决你的问题,请参考以下文章

XML小总结

XML学习总结

2020/2/4学习总结

JPA 对象关系映射总结---persistence.xml 文件配置要点

Spring配置文件基本要点总结

Mustache要点总结