【XML笔记】XML入门_XML文档的创建

一.XML

1.概述:

XMLExtensible Markup Language可扩展标记语言
是SGML(标准通用化标记语言)的一个子集,用于提供数据描述格式,适用于不同应用程序间的数据交换,这种交换不以预先定义的数据结构为前提,增强了可扩展性。
一个基本的XML文档由序言和文档元素两部分构成

2.序言

在XML文档的第一行通常是XML声明,用于说明这是一个XML文档。
XML声明的语法格式如下:
<?xmlversion="version"encoding="value" standalone="value"?>
version:用于遵循XML规范的版本号。在XML声明中必须包含version属性,该属性必须放在XML声明中的其他属性之前。
encoding:用于指定XML文档中字符使用的编码集。常用的编码集为GBK、UTF-8 等。

注:如果在XML文档中没有指定编码集,那么该XML文档将不支持中文

standalone:用于指定该XML文档是否和一个外部文档嵌套使用。取值为yes或no,设置属性值为yes,说明是一个独立的XML文档,与外部文件无关联;设置属性值为no,说明XML文档不独立。

3.文档元素

XML文档中的元素是以树形分层结构排序的,一个元素可以嵌套在另一个元素中。XML文档中有且只有一个顶层元素,称为文档元素或根元素,类似于HTML页中的<body>元素。
XML文档元素由起始标记、元素内容、结束标记3部分组成。语法格式如下:
<TagName>content</TagName>
  • <TagName>:XML文档元素的起始标记。其中TagName是元素的名称
  • content:元素内容,可以包含其他元素、字符数据、字符引用、实体引用、处理命令、注释和CDATA部分。
  • </TagName>:XML文档元素的结束标记。

4.XML语法要求:

  • XML文档必须有一个顶层元素,其他元素必须嵌套在顶层元素中。
  • 元素嵌套要正确,不允许元素间相互重叠或跨越
  • 每一个元素必须要有起始标记和结束标记,且二者元素类型名完全匹配
  • 元素可以包含属性,但属性值必须用单引号或者双引号括起来。

5.XML简单的例子:

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<students>
	<student id="s001">
		<name>张三</name>
		<age>23</age>
		<tel>110</tel>
	</student>
	<student id="s002">
		<name>李四</name>
		<age>24</age>
		<tel>119</tel>
	</student>
</students>	

二.dom4j

1.概述:

dom4j是sourceforge.net上的一个Java开源项目,主要用于操作系统的XML文档,如果创建XML文档和解析XML文档。

dom4j应用于Java集合框架并完全支持DOM、SAX、JAXP,是一种适合程序员使用的JavaXML解析器,具有性能优异、功能强大和易于使用等特点。


2.dom4j的下载与配置。

http://sourceforge.net/projects/dom4j/


三.XML文档的创建

dom4j组件的一个最重要的功能就是创建XML文档。

1.创建XML文档对象

a.DocumentHelper类(dom4j包中的)的createDocument()方法可以创建一个XML文档对象。

Document doc = DocumentHelper.createDocument();

b.DocumentFactory类(dom4j包中的)的对象也可以创建一个XML文档对象。

DocumentFactory对象由DocumentFactory类getInstance()静态方法产生。

DocumentFactory df = DocumentFactory.getInstance();
Document doc = df.createDocument();

2.创建根节点

先创建一个普通节点,再把其设置为根节点
a.创建一个普通节点:
DocumentHelper的createDocument()方法
public static ElementcreateElement(String name)

name:用于指定要创建的节点名。


b.将指定的节点设置为根节点
public voidsetRootElement(Element rootElement)
rootElement:用于指定要作为根节点的普通节点

3.添加注释

为了方便阅读代码,经常在XML文档中添加注释
dom4j组件的Element对象的addComment()方法可以为指定的节点添加注释。
public ElementaddComment(String comment)
comment:用于指定注释内容
Document doc = DocumentHelper.createDocument();	//创建xml文档对象
Element p = DocumentHelper.createElement();		//创建普通结点
doc.setRootElement(p);							//将p设置为根节点
p.addComment("这是根节点");						//添加注释


4.添加属性

Element对象的方法可以为指定节点添加属性
public ElementaddAttribute(String name,String value)
name:指定属性名
value:指定属性值
Document doc = DocumentHelper.createDocument();//创建文档对象
Element root = DocumentHelper.createElement("root");//创建普通节点
doc.setRootElement(root);//将root设置为根节点
root.addAttribute("version", "1.0");//添加属性


5.创建子节点

public ElementaddElement(String name)
name:用于指定节点的名称
Element对象的addElement()方法是从 org.dom4j.Branch接口中继承的。
Document doc = DocumentHelper.createDocument();//创建文档对象
Element root = DocumentHelper.createElement("root");//创建普通节点
doc.setRootElement(root);//将root设置为根节点
Element des = root.addElement("des");//创建子节点	


6.设置节点内容

public voidsetText(String text)
text:指定节点内容
注:Element对象的setText()方法是从 org.dom4j.Node 接口中继承的。
Element des = root.addElement("des");//创建子节点
des.setText("文本");//设置子节点内容


7.设置编码

在使用 dom4j 创建XML文档时,默认编码是 UTF-8 但有时不一定要使用该编码集。
dom4j 的OutputFormat 类提供的 setEncoding()方法设置文档的编码集。
public voidsetEncoding(String encoding)
encoding:指定编码集。常用的有 GBK/GB2312(简体中文)、BIG5(繁体中文)、ISO-8859-1(西欧字符)、UTF-8(通用的国际编码)
OutputFormat outputFormat = new OutputFormat();//创建OutputFormat对象
outputFormat.setEncoding("GBK");	//设置写入流的编码为GBK
//应用上述代码后,将生成的XML文档的声明中将编码集设置为GBK
//<?xml version="1.0" encoding="GBK"?>


8.设置输出格式

应用 dom4j生成 XML 文件时,生成的XML文件默认采用紧凑方式排版。
public static OutputFormatcreateCompactFormat()
生成的XML文件设置为缩进的排版方法

public static OutputFormatcreatePrettyPrint()


9.输出XML文档

在XML文档对象创建完成并添加相应的节点后,还需要输出该XML文档,否则用户将不能看到XML的内容。在应用 dom4j 创建XML文档时,有以下两种输出方式。

a.未设置输出格式

没有设置文档输出格式时,可以使用XMLWriter类的构造方法XMLWriter(Writer writer)实例化一个XMLWriter对象,再利用该对象的write()方法写入数据,最后关闭XMLWriter对象。
String fileURL = request.getRealPath("/xml/p.xml");
XMLWriter writer = new XMLWriter(new FileWriter(fileURL));//实例化XMLWriter对象
writer.write(doc);//向流写入数据
writer.close;//关闭XMLWriter

b.已经设置了输出格式或者编码集

可以使用XMLWriter类的构造方法XMLWriter(Writer writer,OutputFormat format)实例化一个对象,再利用该对象的write()方法写入到数据,最后关闭XMLWriter对象。
OutputFormat format = new OutputFormat();//创建OutputFormat对象
format.setEncoding("GBK");//设置写入流编码
String fileURL = request.getRealPath("/xml/p.xml");//实例化XMLWriter对象
XMLWriter writer = rnew XMLWriter(new FileWriter(fileURL),format);//
writer.write(doc);
writer.close();

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值