可扩展的标记语言---XML

可扩展的标记语言—XML

XML

​ (1)写法格式:同 html 样式
​ (2)仅关注数据本身
​ (3)标记可扩展,可自定义

XML的作用

​ 描述数据、存储数据、传输(交换)数据。配置文件
​ 平台无关性,语言无关性,系统无关性

XML的格式

一、语法规范

​ 1)、必须要有文档声明
​ < ?xml version=“1.0” encoding=“UTF-8” standalone=“yes” ?>
​ <? 表示文档的声明开始
​ xml 表示是一个xml文件
​ version xml的版本,目前是1.0
​ encoding xml文件的编码
​ standalone 文件是否独立存在 如果是"yes",表示文档独立存在,不能引入外部的dtd文件;如果是"no",表示可以。默认为"yes"
​ ?> 表示文档的声明结束
​ 注意文本文件保存时候默认的编码格式是ANSI,需用记事本把它手动改为UTF-8保存。
​ 2)、必须有且仅有一个根元素
​ 3)、严格区分大小写
​ 4)、属性值用引号(双引号或单引号) :等号分开的名称-值对;在一个元素上,相同的属性只能出现一次
​ 5)、标记成对;
​ 6)、空标记关闭;
​ 7)、元素正确嵌套。

二、元素命名规则

​ 1)、名称中可以包含字母、数字或者其他可见字符;
​ 2)、名称不能以数字开头;
​ 3)、不能以 XML/xml/Xml…开头;
​ 4)、名称中不能含空格;
​ 5)、名称中不能含冒号(注:冒号留给命名空间使用)

三、字体

​ 实体叫 ENTITY,实体的作用是避免重复输入。作用相当于宏或者变量。
​ 1)内置的 5 种实体
​ 实体 符号
​ &lt ; <
​ &gt ; >
​ &amp ; &
​ &quot ; "
​ &apos ; ’
​ 2)自定义实体
​ < !DOCTYPE 根元素[
​ < !ENTITY 实体名 “实体内容”> // 实体声明
​ ]>
​ 使用已定义的实体:&实体名;

四、文档类型声明

​ 文档类型定义——DOCTYPE,文档类型声明,紧跟 XML 声明之后,包含所有实体声明
​ < ?xml version=“1.0” encoding=“utf-8”?>
​ < !DOCTYPE 根元素标记名[
​ // 实体声明
​ ]>

五、组成

​ 1、元素、属性、实体、PCDATA、CDATA
​ 2、CDATA
​ 用于把整段文本解释为纯字符数据而不是标记的情况。
​ 如包含大量的<、>、&、或者" 字符。CDATA 节中的所有字符都会被当做元素字符数据的常量部分,而不是 XML 标记,可以输入除]]>外任意字符,不能嵌套。
​ < ![CDATA[ … ]]>
​ 3、PCDATA
​ PCDATA 的意思是被解析的字符数据(parsed character data)。
​ 可把字符数据想象为 XML 元素的开始标签与结束标签之间的文本。

XML的解析

​ 基本的解析方式有两种:一种叫 SAX,另一种叫 DOM。
​ SAX(Simple API for XML)是基于事件流的解析,DOM(Document Object Model)是基于 XML 文档树结构的解析。
​ SAX:效率高,数据量小,仅一次获取
​ DOM:整颗树加载到内存中,耗内存,可多次获取。

实例:
 <!--实体的声明,作用:避免重复输入-->
<!DOCTYPE People[
	<!ENTITY uage "20">
	<!ENTITY uname "王五">
]>

<People>
	<user sex="yes" >
		<name>张三</name>
		<age>20</age>	
	</user>
	<user sex="no">
		<name>李四</name>
		<age>1000&lt;</age>
	</user>
	<user sex="yes">
		<name>&uname;</name>
		<age>&uage;</age>
		<remark>
			<![CDATA[ 你好,<user>这是一个很棒的功能 ]]>
		</remark>
	</user>
</People>

DOM4j 解析

dom4j 是一个简单的开源库,用于处理 XML、 XPath 和 XSLT,它基于 Java 平台,使

用 Java 的集合框架,全面集成了 DOM,SAX 和 JAXP。

可以使用 DOM4J 进行 XML 文件的读、写操作

创建:
public class Dom4JWriter {
	public static void main(String[] args) throws Exception {

		// 使用DocumentHelper来创建 Document对象
		Document document = DocumentHelper.createDocument();
		// 创建元素并设置关系
		Element person = document.addElement("person");
		Element name = person.addElement("name");
		Element age = person.addElement("age");
		// 设置文本
		name.setText("张三");
		age.setText("10");
		// 创建格式化输出器
		OutputFormat of = OutputFormat.createPrettyPrint();
		of.setEncoding("utf-8");
		// 输出到文件
		File file = new File("src/outputdom4j.xml");
		XMLWriter writer = new XMLWriter(new FileOutputStream(new File(file.getAbsolutePath())),of);
		// 写出
		writer.write(document);
		writer.flush();
		writer.close();	
	}
}
解析:
/*
 * 1、获取要解析的文件对象 File
 * 2、获取解析器
 * 3、通过解析器将文件对象转换成Document对象
 * 4、得到Document对象的根元素
 * 5、得到根元素的子元素
 * 6、遍历,得到子元素的名和文本值
 */
public class Dom4JReader {

	public static void main(String[] args) throws Exception {
		// 1、获取要解析的文件对象 File
		File file = new File("src/test.xml");
		// 2、获取解析器
		SAXReader reader = new SAXReader();
		// 3、通过解析器将文件对象转换成Document对象
		Document document = reader.read(file);
		// 4、得到Document对象的根元素
		Element root = document.getRootElement();
		// 5、得到根元素的子元素
		Iterator<Element> iter = root.elementIterator();
		// 6、遍历,得到子元素的名和文本值
		while(iter.hasNext()) {
			Element element = iter.next();
			System.out.println(element.getName() + "-->" + element.getStringValue());
		}
	}	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值