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

  • Post author:
  • Post category:其他



一.XML


1.概述:



XML




Extensible Markup Language


可扩展标记语言


是SGML(标准通用化标记语言)的一个子集,用于提供数据描述格式,适用于不同应用程序间的数据交换,这种交换不以预先定义的数据结构为前提,增强了可扩展性。


一个基本的XML文档由序言和文档元素两部分构成


2.序言


在XML文档的第一行通常是XML声明,用于说明这是一个XML文档。


XML声明的语法格式如下:




<?xml

version

=”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 Element


createElement


(String name)





name:

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




b.将指定的节点设置为根节点




public void

setRootElement

(Element rootElement)




rootElement:

用于指定要作为根节点的普通节点


3.添加注释


为了方便阅读代码,经常在XML文档中添加注释


dom4j组件的Element对象的addComment()方法可以为指定的节点添加注释。




public Element

addComment

(String comment)




comment:

用于指定注释内容

Document doc = DocumentHelper.createDocument();	//创建xml文档对象
Element p = DocumentHelper.createElement();		//创建普通结点
doc.setRootElement(p);							//将p设置为根节点
p.addComment("这是根节点");						//添加注释


4.添加属性


Element对象的方法可以为指定节点添加属性




public Element

addAttribute

(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 Element

addElement

(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 void

setText

(String text)




text:

指定节点内容



注:


Element

对象的setText()方法是从

org.dom4j.Node 接口

中继承的。

Element des = root.addElement("des");//创建子节点
des.setText("文本");//设置子节点内容


7.设置编码


在使用 dom4j 创建XML文档时,默认编码是 UTF-8 但有时不一定要使用该编码集。


dom4j 的

OutputFormat 类

提供的 setEncoding()方法设置文档的编码集。




public void

setEncoding

(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 OutputFormat

createCompactFormat

()



生成的XML文件设置为缩进的排版方法




public static OutputFormat

createPrettyPrint

()









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();



版权声明:本文为fanfan_yang原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。