一、 标记语言
1、超文本标记语言 HTML
(1)写法格式: <a href="link.html">link</a>
(2)关注数据的展示与用户体验
(3)标记是预定义、不可扩展的(如 <a></a>表示超链接)
2、可扩展的标记语言 XML
(1)写法格式:同 html 样式
(2)仅关注数据本身
(3)标记可扩展,可自定义
二、XML 作用
描述数据、存储数据、传输(交换)数据
XML 现在已经成为一种通用的
数据交换格式
1、存储、交换数据
XML 只用元素和属性来描述数据,而不提供数据的显示方法,这使得 XML 具有能够运
行于不同系统平台之间和转换成不同格式目标文件。 用 XML 在应用程序和公司之间
作数据交换,几个应用程序可以共享和解析同一个 XML 文件,不必使用传统的字符串
解析或拆解过程。
2、配置
许多应用都将配置数据存储在各种文件里,如 SSH、Android。使用 XML 配置文件的
应用程序能够方便地处理所需数据,不用像其它应用那样要经过重新编译才能修改和维
护应用系统。xml 比 数据库占用的资源少,操作方便,用来存储简单的信息
三、XML 示例
用 XML 存储已注册用户的数据方式
1、方式 1
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person>
<name>白晶晶</name>
<age>28</age>
</person>
<person>
<name>至尊宝</name>
<age>300</age>
</person>
</people>
2、方式 2
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person name="白晶晶" age="28"></person>
<person name="至尊宝" age="300"></person>
</people>
文档的后缀名是 xml,每个文档有且仅有一个根元素,所谓根元素就是包含了其他所有元
素的元素
XML 目前只有一个版本,即 1.0.XML
四、格式良好的 xml
1、语法规范:
1)、必须有 XML 文档声明:
<?xml version="1.0"?>
<?xml version="1.0" encoding="UTF-8"?>
<?xml version="1.0" standalone="yes"?>
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
注意文本文件保存时候默认的编码格式是ANSI,需用记事本把它手动改为UTF-8保存。
2)、必须有且仅有一个根元素
3)、严格区分大小写
4)、属性值用引号(双引号或单引号) :等号分开的名称-值对;在一个元素上,相同的属
性只能出现一次
5)、标记成对;
6)、空标记关闭;
7)、元素正确嵌套。
2、元素命名规则
1)、名称中可以包含字母、数字或者其他可见字符;
2)、名称不能以数字开头;
3)、不能以 XML/xml/Xml…开头;
4)、名称中不能含空格;
5)、名称中不能含冒号(注:冒号留给命名空间使用)
3、实体
实体叫 ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。
1)内置的 5 种实体
实体 符号
< <
> >
& &
" "
' '
2)自定义实体
<!DOCTYPE 根元素[
<!--实体声明(注释)-->
<!ENTITY 实体名 "实体内容">
]>
使用已定义的实体:&实体名;
<!--引用实体的方法-->
<teacher>
<name>&xm;</name>
<gender>&gen;</gender>
</teacher>
4、文档类型声明
文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明
五、组成
1、构成
元素
属性
实体
PCDATA
PCDATA 的意思是被解析的字符数据(parsed character data)。可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本
CDATA
<![CDATA[ …… ]]>
用于把整段文本解释为纯字符数据而不是标记的情况
CDATA 节(character data)
六、XML 解析(重点
DOM
文档树结构的解析
核心操作接口
Document
此接口代表了整个 XML 文档,表示的是整棵 DOM 树的根
Node
每一个 Node 接口代表了 DOM 树种的一个节点
NodeList
此接口表示的是一个节点的集合
NamedNodeMap
此接口表示的是一组节点和其唯一名字对应的一一对应关系
DOM 解析过程
① 建 立 DocumentBuilderFactory : DocumentBuilderFactory factory=
DocumentBuilderFactory.newInstance();
②建立 DocumentBuilder: DocumentBuilder builder=factory.newDocumentBuilder();
③建立 Document : Document doc=builder.parse(“要解析的文件路径”);
④建立 NodeList : NodeList nl=doc.getElementsByTagName(“读取节点”);
⑤进行 XML 信息读取
DOM 操作除了可以进行解析外,也可以进行文档的生成
如果想要生成 XML 文件,则在创建文档的时候,就应该使用 newDocument()方法
SAX
基于事件流的解析
SAX 解析
SAX(Simple API for XML)解析是按照 xml 文件的顺序一步一步的来解析
// 1、创建解析器工厂
SAXParserFactory factory=SAXParserFactory.newInstance();
// 2、获得解析器
SAXParser parser=factory.newSAXParser();
// SAX解析器 ,继承
DefaultHandlerString path=new File("resource/demo01.xml")。getAbsolutePath();
// 解析
parser.parse(path, new MySaxHandler());
DOM4j 解析
dom4j 是一个简单的开源库,用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使
用 Java 的集合框架,全面集成了 DOM,SAX 和 JAXP
解析
File file=new File("resource/outputdom4j.xml");
SAXReader reader=new SAXReader();
// 读取文件作为文档
Document doc=reader.read(file);
// 获取文档的根元素
Element root=doc.getRootElement();
// 根据跟元素找到全部的子节点
Iterator<Element> iter=root.elementIterator();
while(iter.hasNext()){Element name=iter.next();
System.out.println("value=" + name.getText());}
创建
// 使用DocumentHelper来创建 Document对象
Document document=DocumentHelper.createDocument();
// 创建元素并设置关系
Element person=document.addElement("person");
Element name=person.addElement("name");
Element age=person.addElement("age");
// 设置文本
name.setText("shsxt");age.setText("10");
// 创建格式化输出器
OutputFormat of=OutputFormat.createPrettyPrint();
of.setEncoding("utf-8");
// 输出到文件
File file=new File("resource/outputdom4j.xml");
XMLWriter writer=new XMLWriter(new FileOutputStream(newFile(file.getAbsolutePath())),of);
// 写出
writer.write(document);
writer.flush();
writer.close();
如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h59959.shtml