Java中解析XML的四种常用方法(1)_DOM解析

来源:互联网 发布:手机赌钱软件 编辑:程序博客网 时间:2024/06/01 07:33

在Java中可以快速方便的对XML进行解析操作,既是通过W3C的DOM,SAX解析,或者JDOM的JDOM解析,还有JDOM的升级版DOM4J。

首先是对于DOM解析,DOM解析是能够单独的对XML文件中的各个节点进行访问,但是访问速度是比较慢的,不适合解析大的XML文件,同时,DOM解析可以将内容写到XML文件中去。但是DOM解析XML时,不能识别XML中的属性内容

DOM解析XML之读取XML文件的基本步骤:

1.通过DocumentBuilderFactory的静态方法newInstance()产生DocumentBuilderFactory的实例对象

2.通过DocumentBuilderFactory对象的newDocumentBuilder()方法产生DocumentBuilder的实例对象

3.通过DocumentBuilder的实例对象的parse("XML文件路径")方法获得操作XML文件的Document实例对象

4.通过Document实例对象的getElementsByTagName("标签名字")方法得到所有这个标签名字的节点对象保存在一个ListNode的对象中

5.通过遍历ListNode对象,使用实例对象的item(数值)方法获得Element的实例对象,例如:item(0)就表示第一个节点

6.然后继续通过Element的实例对象的getElementsByTagName("标签名字").item(0).getFirstChild().getNodeValue()方法取得节点的值

对于如下的XML文件,用上诉的6个步骤解析就可以获得结果:

<?xml version="1.0" encoding="GBK"?>
<address>
<contact> <!--第一个contact节点开始-->
<name>g272165123</name>
<email>12312312@qq.com</email>
</contact> <!--第一个contact节点结束-->
<contact> <!--第个contact节点开始-->
<name>44sf4rdfs</name>
<email>dfewfd@gmail.com</email>
</contact> <!--第二个contact节点结束-->
</address>

其中对第4-6步做个详细的解释,Document实例对象的getElementsByTagName("标签名字")方法中的标签名字就是上面的address、contact、name、email这些,你可以从根节点开始获取,也可以直接获取子节点的内容。

比如说那个标签名字写的是contact,那ListNode里面保存的是所有contact节点内容,那意思是这个ListNode实例中的item()方法中有item(0)、item(1)两个内容每一个内容里面都有包含一个完整的contact节点内容,同时可以赋值给Element的实例对象。

然后接着继续通过getElementsByTagName("标签名字").item(0)的方法后的name节点或者email节点,然后通过getFirstChild().getNodeValue()方法获得节点中间的字符串内容。以上就是读取XML文件的操作。就是通过getElementsByTagName("标签名字").item(数值)的方式不断的往深层次的挖掘出节点,最后通过getFirstChild().getNodeValue()方法获得节点的内容

最后对于DOM解析XML时将内容写入XML文件的操作过程,由于DOM写入XML比较的麻烦,所以这里只把流程写一下,下面还是以上面的XML内容举得例子

1.通过DocumentBuilderFactory的静态方法newInstance()产生DocumentBuilderFactory的实例对象

2.通过DocumentBuilderFactory对象的newDocumentBuilder()方法产生DocumentBuilder的实例对象

3.通过DocumentBuilder的实例对象的newDocument()方法获得操作新XML文件的Document实例对象

4.通过Document实例对象的createElement("标签内容")创建节点元素,例如createElement("contact")就创建了contact节点,然后通过节点元素对象的appendChild()方法构建节点之间的关系,Document实例对象的createTextNode("文本内容")可以创建显示文本内容,例如createTextNode("g272165123")。同时通过节点元素对象的appendChild()方法将创建的文本内容与节点元素构建起关系

5.通过TransformerFactorynewInstance()方法产生TransformerFactory的实例化对象

6.通过TransformerFactory的实例化对象的newTransformer()方法产生Transformer的实例化对象

7.通过将Document实例对象传递给DOMSource的构造方法产生于Document实例对象相关连的资源

8.通过向StreamResult的构造方法传递输出文件路劲获得输出文件的结果对象

9.最后通过Transformer的实例化对象的transform("资源","文件结果路径")输出文件

10.可以通过Transformer的实例化对象的setOutputProperty(OutputKeys.ENCODING, "GBK")方法改变编码

以上就是DOM解析XML文件的详细操作步骤

原创粉丝点击