XML JAVA解析 -- DOM

本文介绍 Java DOM (Document Object Model) 的基本概念及其在 XML 文件处理中的应用。通过具体示例代码展示了如何使用 DOM 解析 XML 文件,包括读取元素、属性及文本节点等操作,并演示了如何将解析后的数据转换并输出到新的 XML 文件。
dom : document object model 文档对象模型
java dom就是基于w3c dom规范的一套实现,面向接口编程。
 
1. class diagram
<img src="http://dl.iteye.com/upload/attachment/475630/ac4df8ad-b781-3584-90db-b57ba9589d61.jpg" alt="">
其中: entittyresolver 和 errorhandler 来自于 sax api
 
2. 实例
 
domtest.java
 
package com.siyuan.xml;
import java.io.ioexception;
import javax.xml.parsers.documentbuilder;<br>import javax.xml.parsers.documentbuilderfactory;<br>import javax.xml.parsers.parserconfigurationexception;<br>import javax.xml.transform.source;<br>import javax.xml.transform.transformer;<br>import javax.xml.transform.transformerconfigurationexception;<br>import javax.xml.transform.transformerexception;<br>import javax.xml.transform.transformerfactory;<br>import javax.xml.transform.dom.domsource;<br>import javax.xml.transform.stream.streamresult;
import org.w3c.dom.attr;<br>import org.w3c.dom.document;<br>import org.w3c.dom.element;<br>import org.w3c.dom.namednodemap;<br>import org.w3c.dom.node;<br>import org.w3c.dom.nodelist;<br>import org.w3c.dom.text;<br>import org.xml.sax.saxexception;<br>import org.xml.sax.helpers.defaulthandler;
public class domtest {<br> <br> public static void printelement(element e) {<br>  system.out.println("element : " + e.getnodename() + "---------------");<br>  namednodemap attrs = e.getattributes();<br>  for (int i = 0; i < attrs.getlength(); i++) {<br>   attr attr = (attr) attrs.item(i);<br>   system.out.println("attribute[" + i + "] : " + attr.getname() + "=" + attr.getvalue());<br>  }<br>  nodelist children = e.getchildnodes();<br>  for (int i = 0; i < children.getlength(); i++) {<br>   node node = children.item(i);<br>   if (node instanceof text) {<br>    system.out.println("text node : " + ((text) node).getwholetext());<br>   } else {<br>    printelement((element) children.item(i));<br>   }<br>  }<br> }<br> <br> /**<br>  * @param args<br>  * @throws parserconfigurationexception <br>  * @throws ioexception <br>  * @throws saxexception <br>  * @throws transformerexception <br>  */<br> public static void main(string[] args) throws parserconfigurationexception, saxexception, ioexception, transformerexception {<br>  // todo auto-generated method stub<br>  documentbuilderfactory factory = documentbuilderfactory.newinstance();<br>  documentbuilder builder = factory.newdocumentbuilder();<br>  defaulthandler handler = new workershandler();<br>  builder.setentityresolver(handler);<br>  builder.seterrorhandler(handler);<br>  document document = builder.parse("src/com/siyuan/xml/workers.xml");<br>  printelement(document.getdocumentelement());<br>  <br>  transformerfactory transformerfactory = transformerfactory.newinstance();<br>  transformer transformer = transformerfactory.newtransformer();<br>  transformer.transform(new domsource(document.getdocumentelement()), new streamresult("src/com/siyuan/xml/workers1.xml"));<br> }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值