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方法中写入路径表达式(见手册)。