首页 > 代码库 > xml解析之----DOM解析
xml解析之----DOM解析
DOM模型(documentobject model)
?DOM解析器在解析XML文档时,会把文档中的所有元素,按照其出现的层次关系,解析成一个个Node对象(节点)。
?在dom中,节点之间关系如下:
?位于一个节点之上的节点是该节点的父节点(parent)
?一个节点之下的节点是该节点的子节点(children)
?同一层次,具有相同父节点的节点是兄弟节点(sibling)
?一个节点的下一个层次的节点集合是节点后代(descendant)
父、祖父节点lNode对象提供了一系列常量来代表结点的类型,当开发人员获得某个Node类型后,就可以把Node节点转换成相应的节点对象(Node的子类对象),以便于调用其特有的方法。(查看API文档)
lNode对象提供了相应的方法去获得它的父结点或子结点。编程人员通过这些方法就可以读取整个XML文档的内容、或添加、修改、删除XML文档的内容了。
首先引出要解析的xml文件:
<?xml version="1.0" encoding="UTF-8"?><书架> <书> <书名>javaweb开发</书名> <作者 id="12">张孝祥</作者> <售价>59元</售价> </书> <书> <书名>JavaScript网页开发</书名> <作者>张孝祥</作者> <售价>28.00元</售价> </书> </书架>
以下即是对xml的增删改查操作:
import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.parsers.ParserConfigurationException; import javax.xml.transform.Transformer; import javax.xml.transform.TransformerConfigurationException; import javax.xml.transform.TransformerFactory; import javax.xml.transform.dom.DOMSource; import javax.xml.transform.stream.StreamResult; import org.junit.Before; import org.junit.Test; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; import org.xml.sax.SAXException; public class Demo3 { /** * 利用dom完成文档的crud * @param args * @throws Exception * @throws ParserConfigurationException * @throws Exception * @throws SAXException * @throws Exception */ private Document document; @Before public void before() throws Exception{ //获得dom解析工厂类 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); //得到dom解析器 DocumentBuilder builder = factory.newDocumentBuilder(); //解析xml文件 document = builder.parse("src/book.xml"); } //遍历 @Test public void listXml() throws ParserConfigurationException, SAXException, Exception{ list(document); } public void list(Node node){ //打印结点的名称 System.out.println(node.getNodeName()); //获得所有子节点 NodeList list = node.getChildNodes(); for(int i=0;i<list.getLength();i++){ Node child = list.item(i); //递归整个dom树 list(child); } } //读取书名节点的值:<书名>javaweb开发</书名> @Test public void test1(){ Document document = this.document; Node node = document.getElementsByTagName("书名").item(0); String value = http://www.mamicode.com/node.getTextContent();>
xml解析之----DOM解析
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。