`

xml解析之DOM

    博客分类:
  • xml
阅读更多

DOM Document Object Model 文档对象模型

 

如果一个程序需要进行DOM解析读操作的话,需要按照如下的步骤进行

建立DocumentBuilderFactory DocumentBuilderFactory factory =DocumentBuilderFactory.newInstance();

   建立DocumentBuilder DocumentBuilder builder = factory.newDocumentBuilder();

   建立Document Document doc = builder.parse("要读取的文件路径");

   建立NodeList NodeList nl = doc.getElementsByTagName("读取节点");

   进行xml信息读取。

 

要解析文件——d:\dom_demo_02.xml

<?xml version="1.0" encoding="GBK"?>
<addresslist>
	<name>张三</name>
</addresslist>

 

读取结点: 

public class DOMDemo01 {
	public static void main(String[] args) {
		// 1、建立DocumentBuilderFactory,以用于取得DocumentBuilder
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 2、通过DocumentBuilderFactory取得DocumentBuilder
		DocumentBuilder builder = null;
		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		// 3、定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
		Document doc = null;
		try {
			// 读取指定路径的xml文件
			doc = builder.parse("D:" + File.separator + " dom_demo_02.xml");
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 4、查找name的节点
		NodeList nl = doc.getElementsByTagName("name");
		// 5、输出NodeList中第一个子节点中文本节点的内容
		System.out.println("姓名:" + nl.item(0).getFirstChild().getNodeValue());
	}
}

 

定义要解析的XML文件  d:\dom_demo_02.xml:

<?xml version="1.0" encoding="GBK"?>
<addresslist>
	<linkman>
		<name>张三</name>
		<email>mldnqa@163.com</email>
	</linkman>
	<linkman>
		<name>MLDN</name>
		<email>mldnkf@163.com</email>
	</linkman>
</addresslist>

 

public class DOMDemo01 {
	public static void main(String[] args) {
		// 1、建立DocumentBuilderFactory,以用于取得DocumentBuilder
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 2、通过DocumentBuilderFactory取得DocumentBuilder
		DocumentBuilder builder = null;
		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		// 3、定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
		Document doc = null;
		try {
			// 读取指定路径的xml文件
			doc = builder.parse("D:" + File.separator + " dom_demo_02.xml");
		} catch (Exception e) {
			e.printStackTrace();
		}
		// 4、查找linkman的节点
		NodeList nl = doc.getElementsByTagName("linkman");
		// 5、输出NodeList中第一个子节点中文本节点的内容
		for (int x = 0; x < nl.getLength(); x++) {	// 循环输出节点内容
			Element e = (Element) nl.item(x) ;// 取得每一个元素
			System.out.println("姓名:" + e.getElementsByTagName("name").item(0).getFirstChild().getNodeValue());
			System.out.println("邮箱:" + e.getElementsByTagName("email").item(0).getFirstChild().getNodeValue());
                               }
	}
}

 

生成XML文件:

public class DOMDemo01 {
	public static void main(String[] args) {
		// 1、建立DocumentBuilderFactory,以用于取得DocumentBuilder
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		// 2、通过DocumentBuilderFactory取得DocumentBuilder
		DocumentBuilder builder = null;
		try {
			builder = factory.newDocumentBuilder();
		} catch (ParserConfigurationException e) {
			e.printStackTrace();
		}
		// 3、定义Document接口对象,通过DocumentBuilder类进行DOM树的转换操作
		Document doc = null;
		doc = builder.newDocument();	// 创建一个新的文档
		// 4、建立各个操作节点
		Element addresslist = doc.createElement("addresslist") ;// 建立节点
		Element linkman = doc.createElement("linkman") ;	// 建立节点
		Element name = doc.createElement("name") ;		// 建立节点
		Element email = doc.createElement("email") ;		// 建立节点
		// 5、设置节点的文本内容,即:为每一个节点添加文本节点
		name.appendChild(doc.createTextNode("张三")) ;		// 设置文本
		email.appendChild(doc.createTextNode("mldnqa@163.com")) ;// 设置文本
		// 6、设置节点关系
		linkman.appendChild(name) ;			// 子节点
		linkman.appendChild(email) ;			// 子节点
		addresslist.appendChild(linkman) ;			// 子节点
		doc.appendChild(addresslist) ;			// 文档上保存节点
		// 7、输出文档到文件之中
		TransformerFactory tf = TransformerFactory.newInstance();
		Transformer t = null;
		t = tf.newTransformer();
		t.setOutputProperty(OutputKeys.ENCODING, "GBK") ;	// 设置编码
		DOMSource source = new DOMSource(doc);		// 输出文档
		StreamResult result = new StreamResult(new File("d:" + File.separator
				+ "output.xml"));		// 指定输出位置
		t.transform(source, result);
	}
}

 

分享到:
评论

相关推荐

    XML解析之DOM

    在"XML解析之DOM"这一主题中,我们将深入探讨DOM解析器如何工作,以及如何通过DOM API获取XML文件中的信息。DOM解析器将整个XML文档加载到内存中,形成一个节点树,每个元素、属性、文本等内容都对应一个节点。这种...

    XML解析技术DOM4J解析

    XML解析技术DOM4J解析.doc

    JDK自带xml解析器dom+sax

    JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax JDK自带xml解析器dom+sax

    Android XML解析(DOM、PULL、SAX三种方式)

    Android系统提供了三种主要的XML解析方式:DOM(Document Object Model)、PULL(Pull Parser)和SAX(Simple API for XML)。每种方法都有其独特的特性和应用场景,下面将详细介绍这三种XML解析方式。 1. DOM解析...

    Dom4j解析XML文档.doc

    在本文中,我们将深入探讨如何使用DOM4J来解析和操作XML文档。 首先,要使用DOM4J,你需要下载其库文件。官方站点位于http://www.dom4j.org,你可以在这里找到最新的DOM4J包,例如dom4j-1.6.1.zip。解压缩后,你会...

    dom,dom4j,sax 解析xml文件实例

    本文将深入探讨DOM、DOM4J和SAX三种常用的XML解析方法,并结合具体的实例进行详细讲解。 首先,DOM(Document Object Model)是W3C组织推荐的一种XML解析标准。它将整个XML文档加载到内存中,构建一个树形结构,...

    Android XML解析 SAX DOM Pull

    在Android中,有三种主要的XML解析方式:SAX(Simple API for XML)、DOM(Document Object Model)和Pull Parser。下面将详细介绍这三种解析方式,并结合person类的实例进行讲解。 1. SAX解析: SAX是一种事件驱动...

    dom4j---xml解析jar包

    **DOM4J——XML解析库详解** XML(eXtensible Markup Language)作为一种标记语言,广泛应用于数据交换、配置文件和文档存储等领域。在Java环境中,解析XML文档时,我们通常会遇到各种库,其中DOM4J是一个非常流行...

    Android 创建与解析XML Dom4j方式

    本文将深入探讨如何使用Dom4j库在Android环境中创建和解析XML文档。 首先,了解XML(eXtensible Markup Language)的基本概念。XML是一种标记语言,它允许我们在文档中嵌入结构化数据。它的主要优点是数据与显示...

    xmldom4j解析

    XML解析主要有两种方式:DOM(文档对象模型)和SAX(简单API for XML)。DOM解析会将整个XML文档加载到内存中形成一棵树形结构,方便访问任意节点,但内存消耗大;SAX解析则采用事件驱动,逐行读取XML,适合处理大型...

    DOM4J xml解析工具

    DOM4J作为XML解析工具,其核心功能包括: 1. **解析XML文档**:DOM4J可以使用SAX或DOM方式解析XML文件。SAX是事件驱动的解析器,适用于大文件,而DOM解析会将整个文档加载到内存,适合小文件。DOM4J的灵活性在于,...

    DOMParser解析xml

    DOMParser接口提供了解析XML字符串并创建DOM文档的方法,以便于开发者可以使用DOM API来查询、修改或操作XML数据。 以下是对"DOMParser解析XML"这一主题的详细说明: 1. **DOMParser的基本使用**: 使用DOMParser...

    Dom方式解析XML

    DOM是一种将XML文档映射成内存中的树形结构的解析方式,它允许开发者通过节点操作来访问和修改XML文档。DOM解析器会一次性加载整个XML文档到内存,因此适用于小型或中型XML文件,对于大型文件可能会消耗大量内存。 ...

    多层镶嵌xml解析.zip

    总结一下,DOM4J提供了一种灵活、高效的XML解析方式,尤其适用于处理具有复杂结构的XML文档。通过创建和操作DOM4J的`Element`对象,我们可以方便地解析XML,提取所需数据,并将其存储到自定义的实体类中。对于大型...

    开源XML解析包dom4j

    DOM4J是dom4j.org出品的一个开源XML解析包,它的网站中这样定义: Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections ...

    Android Dom解析XML

    本文将深入探讨如何使用DOM(Document Object Model)解析XML在Android应用中的实践。DOM解析方式允许开发者一次性加载整个XML文档到内存中,形成一个树形结构,便于遍历和操作。尽管对于大型XML文件,DOM解析可能因...

Global site tag (gtag.js) - Google Analytics