java学习与应用(4.3.1)–XML与解析

  • 2020 年 2 月 23 日
  • 筆記

XML

XML(extensible markup language可扩展标记语言),由万维网联盟(W3C)提出,以替代HTML,后来基本用语存储数据(配置文件,网络中传输文件) 第一行文档声明:<?xml version='1.0'?>(属性列表如version[必选],encoding[默认iso-8859-1],standalone[文件是否独立,已失效]),<?xml-stylesheet tpye="text/css" href="xxx.css"?>用于早起和css配合控制样式显示网页。 然后自定义文档标签,有且只有一个跟标签,属性值以引号引起,标签必须正确关闭(配对或自闭和),并区分大小写。标签需要id唯一,CDATA区内容被原样展示(针对特殊字符)(<![DATA[原样展示的数据]]>) 约束:说明文档规定xml文档的书写规则,作为框架的使用者,在xml中引入约束文档(DTD、Schema)。 DTD:<!ELEMENT >定义标签,后添加括号中内为允许的子标签,以*为可出现无数次,+为一次或多次,#PCDATA为字符串。<!ATTLIST>定义标签拥有的属性,顺次为标签、属性、属性类型们(#REQUIRED为必须出现)。 DTD有外部dtd,分本地(<!DOCTYPE 根标签名 SYSTEM "dtd位置">)和网络(<!DOCTYPE 根标签名 PUBLIC "dtd文件名" "url位置">)。也有内部dtd在xml内(<!DOCTYPE 根标签名 [dtd内容]>)。 Schemla约束:能定义字符串内容约束等,xsd后缀。引入方式:在根标签的属性中引入xsi前缀,引入xsd文件命名空间,为每一个xsd约束声明前缀以简化命名空间,xmlns后为空位默认空前缀。

<?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"  >  	<student number="heima_0001">  		<name>tom</name>  		<age>18</age>  		<sex>male</sex>  	</student>    </students>

XML解析

XML解析:DOM方式解析(服务端),根据dom树进行CRUD操作,操作方便但占内存。SAX方式解析(移动端),逐行读取,基于事件驱动,不占内存,但只能读取。 解析器:JAXP由sun公司提供支持dom和sax,DOM4J比较优秀的解析器。Jsoup解析html等【示例】,PULL是Android内置的解析器。导入jar包,获取Document对象,Element对象,获取数据。 Jsoup的使用代码见Demo1。 Jsoup工具对象解析html(parse传入文件和编码或字符串数据或网络资源URL对象和超时时间以加载dom), Document对象代表dom树(根据标签属性id等获取Elements对象以获取元素集合[ArrayList]),Elements代表Element对象集合, Element元素对象(包含获取子标签getElement等方法,attr根据属性名获取属性值,text获取文本内容,html获取标签体的内容),Node节点对象(Document和Element的父类对象)。 快捷查询方式:selector选择器,参考Select类定义的方法。document.select方法,用于获取元素和属性值匹配的数据,中括号内为属性选择,引号添加转义,>为其子标签。 XPath:导入jar包,获取Document对象,创建JXDocument对象,使用JXDocument的语法查询,查询方法如selN方法中写入路径表达式(见手册)。