XML
可扩展性标记语言(标签),用来解决一对多的关系(map,list,map,list...)
XML用来存储数据
HTML用来显示数据
文档声明:
写在文件的第一行
固定格式:<?xml version = "1.0" ?>,可以用一对单引号或者双引号
version:版本号
encoding 编码格式,默认UTF-8
standalone,是否独立(yes no)
元素:标签
包含标签体的标签:有前标签和后标签和标签体的标签
<name>111</name>
标签是可以嵌套,但是不能交叉,子标签(被嵌套的标签),子标签用来完善父标签的
不包含标签体的标签:= =
<Student name = "123" age = "11" />
元素的属性:
注释:<!-- --> 被注释的部分不能被解析
理论上说,注释相当于多行注释,看末尾的-->放在哪
注释里面写的内容的格式取决于设定的编码格式
注释不能嵌套使用
CDATA区:将标签当做普通文本
<![CDATA[ ]]>
特殊字符:= =
处理指令:PI,用来指挥软件如何解析XML文档
常用指令:
XML声明
-xml-stylesheet指令
DTD:文档类型定义,用来约束XML的书写规范
使用的时候将后缀名为dtd的文件导入XML中
编码只能是UTF-8
可以快速引入
Schema:比dtd应用更广= =,后缀名为xsd
XML解析:将XML中的东西解析出来供人使用其中的数据
DOM方式:
将XML中的所有内容一口气全加载到你内存中,如果树比较小,就很容易操作,但是如果比较大的时候就容易出现内存溢出
SAX方式:
节点:标签属性文本换行都是节点
SAX就是将XML一个一个节点的进行解析,解析比较安全但是类似链表点的查询,比较麻烦
PULL解析:Android底层使用的解析方式
解析开发包:
JAXP:sun'提供的,包含了两种解析方式,导包方便
Dom4J(dom for java):开源组织提供的解析开发包,很出名
Log4J:解析日志用的
Dom4J使用:
常用方法:
Document
Element getRootElement()
获取根标签
Element:
List element(String name)
根据指定的元素名称获得相应的所有子元素
List elements()
获得所有的子元素
Element element(String name)
根据指定的元素获得相应的子元素
String elementText(String name)
根据指定的元素名获取子元素中的文本
String getText()
获取当前元素对象的文本
void set(String text)
设定当前元素对象的文本
String attributeValue(String name)
根据指定的属性名称获取相应的值
public Element addAttribute(String name,String value)
根据指定的属性名和值进行添加或者修改
不管怎么说先获得跟标签,然后再进行下一步操作
根标签(父标签)只能有一个,但是可以有多个重复的子标签
只有一个不是说只能有一个不重名的,是只能有一个
根标签里不直接写东西,只作为一个标记作用,具体的东西在子标签里写
浏览器也是一种XML解析工具
传递XML路径名的时候/和\不是一样的,只能用/
因为List允许重复,所以用List存储elements的值,并且List没有精准获取某个元素的位置的方法,但是有获取元素首次出现和最后出现的方法
删除某个字节点的话,删除节点的方法的位置是在它的父节点上,仅仅是父节点 getParent()