xml

XML
XML用途:XML指的是可扩展的标记语言,是独立软件和硬件的信息传输工具。
XML应用于web开发的许多方法,常用来简化数据的存储和共享。

XML处理指令:检称PI
处理指令用来指挥解析引擎如何解析XML文档
<?xml version="1.0" encoding="UTF-8" ?>
在XML中,全部的指令都是以<?开始 ?>结束,
<? 后面紧跟的是处理指令名称,XML处理指令要求指定一个version属性,
并允许指定可选的standalone和encoding,其中standalone是否使用外部声明,
可取yes和no,yes表示不使用外部声明,no表示使用外部声明。encoding是指
使用的字符编码格式,如:utf-8,GBK,gb2312等

元素和属性:XML文档包含XML元素的,XML元素指的是从开始标签(包括)到结束标签的部分,
元素可以包含其他元素和文本或者两者混合,元素可以拥有属性。
<dataSource id="db_oracle">
<property name="url">
oracle:jdbc:thin:@localhost:1521:orcl
</property>

<property name="user">

</property>


</dataSource>

XML元素可以在开始标签中包含属性,属性(Attribute)提供关于元素额外信息,属性通常提供不属于数据组成部分的信息,
XML属性必须要加上引号,属性值必须要被引号包围,单引号和双引号都可以使用。

如果属性值本身包含双引号,那么有必要使用单引号包围。XML对大小写是敏感的
标记<Letter>和<letter>是属于不同的标记,因此其实标记和结束标记的大小写要相同。

元素必须要有关闭标签,XML要求每个元素必须由起始标签和关闭标签组成,关闭标签和起始标签的名字相同,写法上多一个'/'。

XML要求必须有根元素(即不被其他的元素包围),但是根元素只能有一个。元素必须正确的嵌套
错误写法:
<dataSource id="db_oracle">
<property name="url">
oracle:jdbc:thin:@localhost:1521:orcl
</property>
<property name="user">
</dataSource>
</property>

XML解析(重点)
1)DOM解析方式
DOM(Document Object Model)即文档对象模型,是W3C组织推荐的处理XML的一种方式。DOM解析器在解析XML文档时,会把
文档中全部元素,按照出现的层次关系,解析成一个个节点对象。

优点:把XML文件在内存中构造形成树形结构,可以遍历和修改节点
缺点:如果文件比较大,内存压力大,解析的时间长


2)SAX解析方式
SAX(Simple API For XML)一种XML解析的替代方法,相比于DOM,SAX是一种速度更快,更有效的方法,它逐行扫描文件,一遍扫描
一遍解析,而且相比于DOM,可以在文档的任何时刻停止解析。

优点:解析可以立刻开始,速度快
缺点:不能对节点修改

SAXReader读取XML文档
使用SAXReader需要导入dom4j-full.jar
dom4j是一个Java的XML API,类似于jdom,用来读写XML文件,具有性能优异,功能强大和容易使用,同时它也是开放源代码的软件。

//创建SAXReader
SAXReader reader=new SAXReader();
//读取指定的XML文件
Document document=reader.read(new File(filename));

Document对象:是一棵文档树的根,可以为我们提供对文档数据访问的入口。
Document的getRootElement()方法,返回根元素
Element getRootElement() 获取根元素

Element对象:表示XML文档的元素,元素可以包含属性,其他元素和文本,如果包含文本,则在文本节点中表示此文本。

//获取当前元素下的指定名字的子元素
Element element(String name);

//获取当前元素下的全部子元素
List elements();

//获取当前元素的元素名
String getName();

//获取当前元素的文本节点(起始标签和结束标签之间的文本)
String getText();

//获取当前元素的指定属性,index是索引,从0开始
Attribute attribute(int index);

//获取当前元素的指定名字的属性
Attribute attribute(String name);

Attribute对象:用于描述一个元素中的某个属性信息
//获得当前属性的名字
String getName();

//获取当前属性的值
String getValue();

写XML
构造Document对象
通过dom4j写xml的第一步,创建文档对象
创建Document对象的方式是通过DocumentHelper的静态方法,
创建和返回Document对象
static Document createDocument();

通过Document提供的方法addElement()添加根元素
Element addElement()向文档中添加根元素并此返回
此方法只调用一次。

向根元素中追加新的子元素
Element addElement(String name)
向当前元素中添加指定名字的子元素

Element addAttribute(String name,String value)
向当前元素添加指定的属性及对应的值,返回值依然是当前元素

Element addText(String text)
向当前元素添加指定内容的文本

通过XMLWriter将文档输出生成XML文件
XMLWriter writer=new XMLWriter();
FileOutputStream fos=new FileOutputStream("");
writer.setOutputStream(fos);
writer.write(document);
writer.close();

原文地址:https://www.cnblogs.com/yingyigongzi/p/9232313.html