XML

1、XML概念

XML是一门可扩展的标记语言
●可扩展:标签都是自定义的

功能:
(1)存储数据
(2)配置文件
(3)在网络中传输

XML和HTML的区别
(1) XML标签都是自定义的,HTML标签是预定义的
(2)XML的语法严格,html语法松散
(3)XML是存储数据的,HTML是显示数据

2、XML语法

基本语法

(1) XML文档的后缀名.xml
(2)XML第一行必须定义文档声明
(3) XML文档中有且仅有一个根标签
(4) 属性值必须使用引号(单双都可以)引起来
(5) 标签必须正确关闭
(6)XML标签名称区分大小写

<?xml version="1.0"encoding="UTF-8"?>
<users>
    <user id="1001">
        <name>zhangsan</name>
        <age>19</age>
        <gender>man</gender>
    </user>
    <user id="1002">
        <name>lisi</name>
        <age>20</age>
        <gender>man</gender>
    </user>
</users>

组成部分:

文档声明:

  1. 格式:<?xml 属性列表 ?>
  2. 属性列表:
    version:版本号,必须的属性
    encoding:编码方式,告知解析引擎当前文档使用的字符集,默认值ISO-8859-1
    standalone:是否独立
  3. 取值:yes,不依赖其他文件;no,依赖其他文件

标签,标签名称自定义

规则:
(1)名称可以包含字母,数字以及其他的字符
(2) 名称不能以数字或者标点符号开头
(3) 名称不能以字母xml或者XML开始
(4)名称不能包含空格

属性: id属性值唯一

文本:
(1)CDATA区:在该区域中的数据会被原样展示
(2)格式:<![CDATA[数据]]>

3、约束

(1)XML的约束就是用来规定XML文档的书写规则

(2)作为框架的使用者(程序员)
能够在XML中引入约束文档
能够简单的读懂约束文档

(3)分类:
DTD:一种简单的约束技术
Schema:一种复杂的约束技术

(4)DTD
引入dtd文档到xml文档中

内部dtd:将约束规则定义在XML文档中

外部dtd:将约束的规则定义在外部的dtd文件中

本地:<!DOCTYPE 根标签名 SYSTEM “dtd文件的位置”

网络:<!DOCTYPE 根标签名 PUBLIC “dtd文件名” “dtd文件的位置URL”

<!DOCTYPE hibernate-configuration PUBLIC	
	"-//Hibernate/Hibernate Configuration DTD 3.0//EN"	
	"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

(5)l Schema:

引入:
●填写XML问的根元素
●引入xsi前缀
●引入xsd文件命名空间
●为每一个xsd约束声明一个前缀,称为标识

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"    
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
	xmlns:p="http://www.springframework.org/schema/p"    
	xsi:schemaLocation="http://www.springframework.org/schema/beans        
		http://www.springframework.org/schema/beans/spring-beans.xsd">

4、解析

(1) XML解析:操作XML文档,把文档中的数据读取到内存中

操作:
●解析(读取),将文档中的数据读取到内存中
●写入:将内存中的数据保存到XML文档中,持久化存储。

(2)解析XML的方式

●DOM(Document Object Model):将标记语言文档一次性加载到内存中,在内存中形成一颗dom数

优点:操作方便,可以对文档进行CRUD的所有操作。

缺点:占内存

●SAX:逐行读取,基于事件驱动的

优点:不占内存

只能读取,不能增删改

(3)XML常见的解析器

●JAXP:SUN公司提供的解析器,支持DOM和SAX两种方式

● DOM4J:一款非常优秀的解析器

●Jsoup:JSOUP是一款Java的HTML解析器,可以直接解析某个URL地址、HTML文本内容

●PULL:Android操作系统内置的解析器,SAX方式

(4) Jsoup快速入门
● 导入JAR包
● 获取Document对象
● 获取对应的标签Element对象
● 获取数据

package com.bdit;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.io.File;
import java.io.IOException;

public class JSOUPDemo {
    public static void main(String[] args) throws IOException {
        //1、获取xml_demo1.xml的path 获取的是SRC目录下的
        String path=JSOUPDemo.class.getClassLoader().getResource("xml_demo1.xml").getPath();
        System.out.println(path);
        //2、解析XML文档,加载文档到内存,获取DOM树
        Document document= Jsoup.parse(new File(path),"utf-8");
        //3、获取元素对象
        Elements elements=document.getElementsByTag("name");
        System.out.println(elements.size());
        //4、获取第一个name的Element对象
        Element element=elements.get(0);
        //5、获取数据
        String name=element.text();
        System.out.println(name);
    }
}

对象的使用

(1)Joup:工具类,可以解析HTML或XML文档,返回Documentu

parse:有它来实现
parse(File in,String characterName):
parse(String html)
parse(URL url,int timeoutMills)

(2)Document:文档对象,代表内存中的DOM数

获取Element对象:

getElementById
getElementsByTag
getElementsByAttribute()
getElementsByAttributeValue()

(3) Elements:元素对象的集合,可以当做ArrayList来使用

(4)Element元素对象

(5) 获取属性值:String attr(String key):根据属性名称获取属性值

(6) 获取文本内容:

String text()
String html()

Node:结点对象

是Document和Element的父类。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值