java基础 - XML操作

原文链接

Java进阶之"XML操作" https://zhuanlan.zhihu.com/p/30829960

 

详细代码参考(必看)

XML解析——Java中XML的四种解析方式

 

1.XML全称是"(扩展标记语言)"

是一种用来结构化文档和数据的通用且适应性强的格式,它不仅仅可以用于 WEB,而且可以被用于任何地方。说的明白一点就是:XML 被设计用来传输和存储数据的。

在java中,很多配置文件,都是xml文件,比如说spring,或者mybatis.

XML的学习和使用都很简单,我们先看它的语法.

1.1 所有 XML 元素都须有关闭标签

<p>有始有终</p>

1.2 XML 标签对大小写敏感

<Message>前后是不一样的,这就错了.</message>

1.3 XML 必须正确地嵌套

<b><i>同学,请注意插入顺序.</b></i>

1.4 XML 文档必须有根元素

XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素

<root>
  <one>
    <two>.....</two>
  </one>
</root>

1.5 XML 的属性值须加引号

<datasource id="db_oracle">这一行有引号,正确.</datasource>
<datasource id=db_oracle>这一行没有引号,错误的.</datasource>

1.6 特殊字符的使用方式(又叫实体引用)

<message> 10 < 1000 </message>  //这是错误的.
<message> 10 &lt; 1000 </message>  //这是正确的.

在 XML 中,有 5 个预定义的实体引用:

&lt; < 小于
&gt; > 大于
&amp; & 和号
&apos; ' 单引号
&quot; " 引号

1.7 XML 中的注释

<!-- 这是注释 -->  //与html的语法一样

1.8 CDATA段

格式:< ! [ CDATA [ 文本内容 ] ] >

特殊标签中的实体引用都被忽略,所有内容被当成一整块文本数据对待.适用于有多个特殊字符的情况.

语法看完了,我们看看用法.

2.xml的解析

xml的解析方式有多种,在Java中,我们只说两种最常用的方式.

2.1 DOM解析方式

DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种方式。DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。其优缺点分别为:

优点:把xml文件在内存中构造树形结构,可以遍历和修改节点

缺点: 如果文件比较大,内存有压力,解析的时间会比较长

2.2 SAX解析方式

SAX(simple API for XML)是一种XML解析的替代方法。相比于DOM,SAX是一种速度更快,更有效的方法。它逐行扫描文档,一边扫描一边解析。而且相比于DOM,SAX可以在解析文档的任意时刻停止解析。 其优缺点分别为:

优点: 解析可以立即开始,速度快,没有内存压力

缺点: 不能对节点做修改

2.3 读取XML

Java中常用的操作xml的一个包是dom4j的包.

dom4j是一个非常优秀的Java XML API,具有性能优异、功能强大和极端易用的特点,同时它也是一个开放源代码的软件。使用dom4j来实现对XML文档的解析,详细过程如下:

2.3.1 使用dom4j需要导入dom4j对应的jar包。

2.3.2 创建SAXReader类的对象来实现读取XML文档,代码如下:

 SAXReader reader = new SAXReader();

2.3.3 使用SAXReader类的read方法获取Document对象,Document 对象是一棵文档树的根,可为我们提供对文档数据的最初(或最顶层)的访问入口,代码如下:

 Document doc = reader.read(new File("EmpList.xml"));

2.3.4 使用Document对象的getRootElement方法获取要解析的XML文档的根元素,该方法返回值类型为Element。Element 对象表示 XML文档中的元素。元素可包含属性、其它元素或文本。如果元素含有文本,则在文本节点中表示该文本,代码如下:

Element root = doc.getRootElement();

2.3.5 使用Element对象提供的方法继续解析XML文档,例如:其elements方法用来获取当前元素下的所有子元素,代码如下:

List<Element> elements = root.elements();

2.3.6 最后遍历list集合即可.

2.4 写一个XML文件.

2.4.1 使用DocumentHelper类的静态方法createDocument创建文档对象Document,代码如下所示:

 Document doc = DocumentHelper.createDocument();

2.4.2 使用Document类的addElement方法,创建根节点<list>,代码如下所示:

// 添加根标记
 Element root = doc.addElement("list");

2.4.3 添加子元素

// 向根元素中添加名为user的子元素
 Element ele = root.addElement("user");

然后为one这个元素赋值

ele.addAttribute("id", 1);
ele.addElement("name").addText("小明");

2.4.4 :生成文件

// 写出
XMLWriter writer = new XMLWriter();
FileOutputStream fos = new FileOutputStream("emps.xml");
writer.setOutputStream(fos);
writer.write(doc);
 writer.close();

至此.xml 读取与写出,阐述完毕.

 

posted on 2020-09-02 15:30  frank_cui  阅读(1486)  评论(0编辑  收藏  举报

导航

levels of contents