XML基础
XML:可扩展的标记语言,以标记和子标记方法描述对象数据。
XML根元素:
每个XML文档必须有且只有一个根元素。
根元素是一个完全包含文档中其他所有元素的元素。
所有元素都必须在根元素中定义。
XML实体:(在XML文件中出现、<、>、"、等符号需要用预定义的实体来代替)
实体 符号
< <
> >
↦ &
&qout; "
’ ’
CDATA标签:CDATA是不被解析器解析的文本。文本内的标签不会被当做标记,实体不会被展开。
语法:
<![CATA[
…
]]>
XML语法规范:
1.必须要有XML声明语句
<?xml varsion=“1.0” encoding=“utf-8”>
2.必须有且仅有一个根元素
3.标记大小写敏感
4.属性值用引号
5.标记成对
6.空标签关闭
7.元素正确嵌套
实例:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE 家庭 [ <! -- !DOCTYPE 家庭 定义根元素为"家庭" -->
<!ELEMENT 家庭 (人+,家电*)> <!--ELEMENT表示定义元素,()表示定义该元素的内容,人和家电表示家庭的子元素,
*表示该元素至少出现一次,*表示可以不出现,也可以出现多次 -->
<! ELEMENT 人 (#PCDATA)> <!--#PCDATA表示元素中的内容为文本数据 -->
<!ELEMENT 家电 EMPTY> <!--EMPTY表示家电标签为空标签,元素体中没有内容-->
<!ATTLIST 人 <!--ATTLIST表示定义指定元素的属性-->
名字 CDATA #REQUIRED <!--CDATA表示该属性的内容为文本数据, #REQUIRED 表示名字必须出现-->
性别 (男|女) #REQUIRED <!--(男|女)表示该属性的内容必须是‘男’或者‘女’ -->
年龄 CDATA #REQUIRED
爱好 CDATA #IMPLIED <!--#IMPLIED表示该属性可有可无 -->
>
<!ATTLIST 家电
名称 CDATA #REQUIRED
数量 CDATA #REQUIRED
说明 CDATA #IMPLIED
>
]>
有效的XML:
1.有效的XML除了要满足XML规范外,还要满足相应的DTD和Schema定义的元素规则。
2.有效的XML一定是格式良好的。但格式良好的XML不一定是有效的。
DOM解析:
基于树状结构的API。
整个XML文档必须在内存中解析和储存。
客户端应用程序就可以随机访问这些对象。
大型文档则会造成内存紧张。
SAX解析:
SAX提供一种用于解析XML文档的事件驱动模型。
使用回调机制将事件通知应用程序。
特点:
不必将整个文件加载到内存中,占用内存少
不能对文档进行随机访问
SAX是只读的 文档只能遍历一次
DOM4J解析方式
dom4j包中常用方法:
核心对象 SAXReader
SAXReader reader = new SAXReader();
将xml文档加载到内存中形成一棵树
Document doc=reader.read(文件);
获取根节点
Element root=doc.getRootElement();
通过根节点就可以获取其他节点(文本节点,属性节点,元素节点)
获取所有的子元素
List list=root.elements();
获取元素的指定属性内容
String value=root.attributeValue(“属性名”);
获取子标签标签体:遍历list 获取到每一个子元素
String text=ele.elementText(“子标签名称”);