【XML笔记】XML入门_XML文档的创建
程序员文章站
2022-05-30 10:21:44
...
一.XML
1.概述:
XML是Extensible 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();
上一篇: XML:文档的修改和删除
下一篇: xml文档的解析