用asp.net和access做的关于校园二手网站的论文,网站环境搭建好后怎么做网站,海北公司网站建设价格低,中国建设银行网站分析文章目录XML 简介XML 语法XML 组成部分XML 约束DTD名称解释引用内部的 DTD引用外部的 DTDSchema语法格式详解命名空间前缀的意义XML 解析解析 XML 的方式#xff08;思想#xff09;解析器JSOUP 的使用JSOUP 入门快捷查询Jsoup 选择器查询XPathXML 简介
XML#xff0c;Exte…
文章目录XML 简介XML 语法XML 组成部分XML 约束DTD名称解释引用内部的 DTD引用外部的 DTDSchema语法格式详解命名空间前缀的意义XML 解析解析 XML 的方式思想解析器JSOUP 的使用JSOUP 入门快捷查询Jsoup 选择器查询XPathXML 简介
XMLExtensible Markup Language可扩展标记语言。 可扩展主要是指标签完全由用户自定义。
功能存储数据 1.配置文件 2.在网络中传输
xml 与 html 的区别 1.xml 标签都是自定义的html 标签是预定义 2.xml 的语法严格html 语法松散 3.xml 是存储数据的html 是展示数据
XML 语法
语法规则 1.xml 文档的后缀名.xml 2.xml 第一 行必须定义为文档声明 3.xml 文档中有且仅有一个根标签 4.后性值必须使用引号(单双都可)引起来 5.标签必须正确关闭 6.xml标签名称区分大小写
XML 组成部分
1.文档声明
1.1.格式?xml 属性列表 ? 1.2.属性列表 version版本号必须的属性 encoding指定解码的字符编码。告知解析引擎需要使用什么字符编码解码文档默认值: ISO- 8859-1 standalone是否独立。取值 yes不依赖其他文件取值 no依赖其他文件。这个了解即可。
2.指令 引入 css 文件用于展示 xml 文件的内容 ?xml-stylesheet typetext/css hrefdemo.css ?
3.标签 自定义标签名称命名规则和 HTML 相同
4.属性 id 属性值必须唯一
5.文本 CDATA区在该区域中的数据会被原样展示
格式![CDATA[ 数据 ]]
XML 约束
作为框架的使用者(程序员) 1.能够在 xml 中引入约束文档 2.能够简单的读懂约束文档 约束分类 1.DTD一种简单的约束技术 2.Schema一种复杂的约束技术
DTD
引入 DTD 可以使用两种方式引用内部定义的 DTD 和引用外部的 DTD 文档。
内部 DTD将约束规则定义在 XML 文档中 外部 DTD将约束的规则定义在外部的 DTD 文件中
名称解释
#PCDATA表示元素的内容是普通文本 CDATA表示属性值的类型是字符串类型 #REQUIRED表示属性是必须的 ID表示属性值是唯一的 #IMPLIED表示属性非必须的即可有可无
引用内部的 DTD
下面的范例就是引用内部的 DTD
?xml version1.0 encodingutf-8?
?xml-stylesheet typetext/css hrefdemo.css?
!DOCTYPE 书籍列表[!-- 定义一个标签名称叫书籍列表里面包含标签武侠小说和computer_book并且武侠小说和computer_book可以出现任意个≥0--!ELEMENT 书籍列表 (武侠小说*,computer_book*)!-- 定义一个标签名称叫武侠小说里面包含标签书名、作者、价格、册数、简介要求出现的顺序必须一致而且每个标签只能有1个而且必须有--!--作者表示作者标签可以有1个或者多个--!--简介?表示简介标签可以有0个或者1个--!ELEMENT 武侠小说 (书名,作者,价格,册数,简介?)!ELEMENT computer_book (book_name,author,price,copies,profile)!--(phone|mobile)*表示可以出现phone或者mobile或者两者都出现可以出现多次--!ELEMENT 作者 (name,(phone|mobile)*)!ELEMENT name (#PCDATA)!ELEMENT phone (#PCDATA)!ELEMENT mobile (#PCDATA)!ELEMENT 书名 (#PCDATA)!ELEMENT 价格 (#PCDATA)!ELEMENT 简介 (#PCDATA)!ELEMENT 册数 (#PCDATA)!ELEMENT book_name (#PCDATA)!ELEMENT author (#PCDATA)!ELEMENT price (#PCDATA)!ELEMENT copies (#PCDATA)!ELEMENT profile (#PCDATA)!--表示武侠小说标签有属性isbn且是必须的。REQUIREd表示必须IMPLIED非必须ID表示属性值唯一有属性hot默认值false--!ATTLIST 武侠小说isbn CDATA ID #REQUIREddate CDATA #REQUIREdhot CDATA false]引用外部的 DTD
DTD 可以独立成文档在 XML 文档中引入 DTD 文档引入语法格式
如果 DTD 文件在项目中!DOCTYPE 根标签名 SYSTEM DTD文件的路径 如果 DTD 文件在网络中!DOCTYPE 根标签名 PUBLIC DTD文件名称 DTD文件的URL
DTD类型 PUBLIC行业共用的 SYSTEM系统本地的自定义的
Schema
语法格式详解
xmlns:namespace-prefixnamespace其中的 namespace-prefix 可以省略掉。namespace-prefix 叫做命名空间前缀其实相当于变量用来引用某个命名空间。
xmlns 是 XML Namespace 的缩写译为 XML 命名空间。命名空间可理解为某种资源的别名用来区分、识别不同的引用资源。
xmlns:xsi 表示使用 xsi 来引用指定的命名空间而这个 xsi 在 XML 中叫做命名空间前缀。
xsi 是 XML Schema Instance含义是 Schema 的实例Schema 是一种约束技术所谓实例就是这种技术的具体实现所以 xsi 是用来引用 Schema 技术的具体实现的。
xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance 表示使用 xsi 引用命名空间 http://www.w3.org/2001/XMLSchema-instance。
Schema 技术的具体实现有很多如下图所示
xsi:schemaLocation 属性定义了 XML Namespace 和 XSDXml Schema Definition文档的对应关系。它的值由一个或多个URL引用对组成命名空间与 XSD 文件之间以空格和换行分隔。第一个 URL 是 XSD 文件的 XML Namespace 的值第二个 URL 则是 Schema 文档的位置XML 引擎将从这个位置读取 Schema 文档该文档的 targetNamespace 必须与第一个 URL 相匹配。
xsi:schemaLocation 属性是来自于某个具体的 Schema 技术实现xsi 则引用某个命名空间这个命名空间指向某个资源文件。
例如
students xmlns:xsihttp://www.w3.org/2001/XMLSchema-instance xmlnshttp://www.itcast.cn/xmlxsi:schemaLocationhttp://www.itcast.cn/xml student.xsdxsi 引用 http://www.w3.org/2001/XMLSchema-instancehttp://www.w3.org/2001/XMLSchema-instance 是一种 Schema 的具体技术实现。
xsi:schemaLocationhttp://www.itcast.cn/xml student.xsdxsi:schemaLocation 属性是来自于前缀 xsi 的而前缀 xsi 引用 http://www.w3.org/2001/XMLSchema-instance所以 schemaLocation 属性其实是来自于 http://www.w3.org/2001/XMLSchema-instance也就是说在 http://www.w3.org/2001/XMLSchema-instance 中定义了属性 schemaLocation。
schemaLocation 的值是 http://www.itcast.cn/xml student.xsd说明 XML 具体使用的 Schema 定义文档时是 sutdent.xsd而且这个文档的命名空间是 http://www.itcast.cn/xml那么就可以通过 http://www.itcast.cn/xml 来引用文档 sutdent.xsd。
xmlnshttp://www.itcast.cn/xml这个表示标签没有前缀的情况下默认引用的命名空间是 http://www.itcast.cn/xml而这个命名空间指向的是 sutdent.xsd所以标签没有前缀的情况下默认使用 sutdent.xsd 中的定义。
命名空间前缀的意义
?xml version1.0 encodingUTF-8 ?
students xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlnshttp://www.itcast.cn/xmlxmlns:ahttp://www.itcast.cn/xml2xsi:schemaLocationhttp://www.itcast.cn/xml student.xsdhttp://www.itcast.cn/xml2 student2.xsdstudent numberheima_0001name刘德华/nameage11/agegendermale/gender/student
!--这个student标签使用的是student2.xsd的定义--a:student numberheima_0002a:name张学友/a:namea:age11/a:agea:gendermale/a:gender/a:student
/students如上所示xml 文档中引入两个 Scheme 定义文件而这两个文件中都定义了标签 student、name、age、gender那么你要使用哪个 XSD 文档定义的标签呢你可以在标签前面加上前缀进行标识这样 XML 引擎就知道要依据哪个 XSD 进行解析判断了。
XML 解析
操作 XML 文档 所谓解析就是读取数据input/输入将 XML 文档中的数据读取到内存中。 写入数据output/输出就是将内存中的数据保存到 XML 文档中即所谓的持久化存储。
解析 XML 的方式思想
1.DOM 将标记语言文档一次性加载进内存中在内存中形成一棵 DOM 数。适用于服务器等设备
优点操作非常方便可以对文档进行 CRUD 的所有操作 缺点比较消耗内存
2.SAX 逐行读取基于事件驱动适用于内存空间小设备例如手机
优点不占内存 缺点只能读取不能增删改
解析器
根据 DOM 或者 SAX 思想实现的工具包。 1.JAXPsun 公司提供的解析器支持 DOM 和 SAX 两种思想很少使用 2.DOM4J优秀的解析器基于 DOM 思想实现在服务器端常用 3.jsoup一款Java 的HTML解析器可直接解析某个URL地址、HTML文本内容。它提供了一套非常省力的API可通过DOMCSS以及类似于jQuery的操作方法来取出和操作数据。 4.PULL安卓系统内置的解析器基于 SAX 思想实现
JSOUP 的使用
步骤 1.导入 jar 包 2.获取 Document 对象这个对象代表整个 DOM 树结构 3. 获取对应的标签即 Element 对象 4. 获取数据
JSOUP 入门
package pri.lwx.javaex.xmlex.jsoup;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;/*** Jsoup快速入门** author liaowenxiong* date 2021/12/14 11:53*/public class JsoupDemo01 {public static void main(String[] args) throws IOException {// 获取XML文件的PathString path JsoupDemo01.class.getClassLoader().getResource(pri/lwx/javaex/xmlex/schema/student.xml).getPath();// 解析XML文档加载文档进内存获取dom树Document对象// parse方法需要指定解码的编码格式Document doc Jsoup.parse(new File(path), utf-8);// 获取元素对象// getElementsByTag通过标签名获取元素对象集合// Elements继承自ArrayListElements elements doc.getElementsByTag(name);// 查看集合的长度System.out.println(元素集合长度 elements.size());// 获取集合的第一个元素对象Element element elements.get(0);// 获取集合对象中的文本数据String name element.text();System.out.println(name);}
}对象的说明 1.Jsoup 工具类可以解析 html 或者 xml 文档返回 Document 对象 parse(File in, String charsetName)解析 XML 和 HTML 文件 parse(String html)解析 HTML 和 XML 字符串 parse(URL url, int timeoutMillis)通过指定的网络资源路径获取对应的文档对象
2.Document 文档对象代表内存中的dom树 Document 继承自 Element 通过 Document 对象获取 Element 对象或者 Element 对象集合
getElementsByTag(string tagName) 根据标金名称获取元素对家集合 getElementsByAttribute(String key) 根据属性名称获取元素对象集合 getElementsByAttributevalue(String key, String value) 根据属性名和属性值获取元素对象集合 getElementsByClass(String classValue)根据 class 属性值获取元素对象集合 getElementById(String id)根据ID值获取元素对象
3.Elements Element 对象的集合本质是 ArrayListElement
4.Element 元素对象 4.1.可以获取子元素对象 4.2.可以获取元素的属性值 public String attr(String attributeKey)根据属性名获取对应的属性值 4.3.可以获取元素的文本内容 public String text()获取元素的文本内容包含子元素中的文本内容 public String html()获取元素的innerHTML内容即标签体中所有的内容
5.Node 节点对象Node 是 Element 的父类
快捷查询
Jsoup 选择器查询
public Elements select(String cssQuery)
参考 Selector 类中定义的语法
示例代码
package pri.lwx.javaex.xmlex.jsoup;import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;import java.io.File;
import java.io.IOException;/*** Jsoup的选择器查询** author liaowenxiong* date 2021/12/15 10:19*/public class JsoupDemo04 {public static void main(String[] args) throws IOException {// 获取xml文件的绝对路径String path JsoupDemo04.class.getClassLoader().getResource(pri/lwx/javaex/xmlex/schema/student.xml).getPath();// 获取xml文件对应的Document对象Document document Jsoup.parse(new File(path), utf-8);// 使用标签选择器类似css的标签选择器获取所有名称为student的元素Elements elements document.select(student);System.out.println(elements);System.out.println(-----------------);// 使用属性值选择器获取所有number属性值为heima_0001的student元素Elements elements1 document.select(student[numberheima_0001]);System.out.println(elements1);System.out.println(-----------------);// 使用属性值选择器后代选择器获取所有number属性值为heima_0001的student元素所包含的name元素Elements elements2 document.select(student[numberheima_0001] name);System.out.println(elements2);System.out.println(-----------------);}
}XPath
XPath即为XML路径语言XML Path Language它是一种用来确定XML文档中某部分位置的语言。 XPath 使用路径表达式来选取 XML 文档中的节点或节点集。节点是通过沿着路径 (path) 或者步 (steps) 来选取的。
使用 XPath 需要导入相关的 jar 包
JsoupXpath-2.5.1.jar slf4j-jdk14-1.6.1.jar slf4j-api-1.7.32.jar antlr4-runtime-4.7.2.jar commons-lang3-3.12.0.jar
主页https://github.com/zhegexiaohuozi/JsoupXpath 教程https://www.w3school.com.cn/xpath/index.asp