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> }
}
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> }
}
本文介绍 Java DOM (Document Object Model) 的基本概念及其在 XML 文件处理中的应用。通过具体示例代码展示了如何使用 DOM 解析 XML 文件,包括读取元素、属性及文本节点等操作,并演示了如何将解析后的数据转换并输出到新的 XML 文件。
2287

被折叠的 条评论
为什么被折叠?



