`
yjshengshe
  • 浏览: 204591 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

dom解析xml详解

    博客分类:
  • java
 
阅读更多

 

 解析xml并打印出所有的属性名称和文本内容

 

1 test-a.xml文件

 

<?xml version="1.0" encoding="UTF-8"?>
	<result>
			<man>
				<name>sky</name>
				<age>18</age>
				<sex>1</sex>
			</man>
	</result>

 

 2 java dom访问,主要功能是遍历xml文件并按层次打印出所有的节点名称和文本内容

package com.java.xml.dom;

	import java.io.File;

	import javax.xml.parsers.DocumentBuilder;
	import javax.xml.parsers.DocumentBuilderFactory;

	import org.w3c.dom.Document;
	import org.w3c.dom.Node;
	import org.w3c.dom.NodeList;

	/**
	 * DOM是以层次结构组织的节点或信息片段的集合。
	 * 分析该结构通常需要	加载整个文档和构造层次结构。
	 * 由于它是基于层次结构的,因而DOM被认为是基于树或基于对象的。
	 * 优点:
	 * 因为DOM树是加载到内存中的,修改比较方便。
	 * 支持删除、修改、重新排列等多种功能
	 * 缺点:
	 * 将整个文档调入内存(包括无用的节点),浪费时间和空间;
	 * 使用场合:一旦解析了文档还需多次访问这些数据;硬件资源充足(内存、CPU)。
	 * @author Administrator
	 *
	 */
	public class DomA {
		
		/**
		 * 控制台输出类
		 * @param s 要输出的字符
		 * @param level 层次
		 */
		public static void print(String s,int level)
		{
			String result = "";
			
			for (int i = 0; i <level ;i++)
			{
				result = result + "----";
			}
			
			result = "level:"+level+":"+result + s;
			
			System.out.println(result);
		}

		/**
		 * 循环解析xml对象的方法
		 * @param list
		 */
		public static void circle(NodeList list,int level)
		{
			
			NodeList childList = null;
			
			for (int i = 0; i < list.getLength(); i++)
			{
				int newLevel = level;
				
				Node node = list.item(i);
							
				/**
				 * 如果是文本对象直接输出 
				 * 忽略空白文本,dom解析时,getChildNodes会生成空白Node	
				 */
				if (Node.TEXT_NODE == node.getNodeType() && !("").equals(node.getNodeValue().trim()))
				{
					newLevel = newLevel + 1;
					
					print(node.getNodeValue()+"",newLevel);
				}
				
				//如果是对象类型
				if (Node.ELEMENT_NODE == node.getNodeType())
				{
					newLevel = newLevel + 1;
					
					print(node.getNodeName()+"",newLevel);
					
					childList = node.getChildNodes();
					
					//继续循环
					circle(childList,newLevel);
					
				}	
			}
		}
		/**
		 * dom解析
		 */
		public static void dom()
		{
			try 
			{
				File xml = new File("D:/新的开始/学习笔记/java学习/xml解析/test-a.xml");
				DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
				DocumentBuilder builder = factory.newDocumentBuilder();
				Document doc = builder.parse(xml);
				
				//doc根对象	
				Node root = doc.getDocumentElement();
				
				//根节点子对象集合
				NodeList list = root.getChildNodes();
		
				circle(list,0);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		/**
		 * @param args
		 */
		public static void main(String[] args) {
			// TODO Auto-generated method stub
			
			dom();
			
		}

	}
 

 3 执行DomA对象的main方法,输出如下:

 

level:1:----man
level:2:--------name
level:3:------------sky
level:2:--------age
level:3:------------18
level:2:--------sex
level:3:------------1

 4 注意点:

 

dom解析getChildNodes会生成空白Node,解析时需要注意。

举例1 :

 

<result>
	<man>
		<name>sky</name>
		<age>18</age>
		<sex>1</sex>
	</man>
</result>

 

//doc根对象	
		Node root = doc.getDocumentElement();
		
		//根节点子对象集合
		NodeList list = root.getChildNodes();

 那么list.getLength()值是什么呢?

 

不熟悉的人可能会认为是:1 ,其实实际答案是3 如下所示:

 

1 空白text-Node
		2 element-Node
		(
			<man>
				<name>sky</name>
				<age>18</age>
				<sex>1</sex>
			</man>
		)
		3 空白text-Node

 如果

 

NodeList list2 = doc.getElementsByTagName("man")
 

那么list2.getLength()值是什么呢?

答案是:1 这个不含有空白node

 

举例二:

 

<name>sky</name>

 这个节点对象的getChildNodes().getLength()是几呢?答案是1 不包含空白节点

需要注意下。

 

 

分享到:
评论

相关推荐

    java中用dom解析xml的经典入门级文档

    ### Java中使用DOM解析XML详解 #### 一、引言 在Java开发中,解析XML是一种常见的需求。XML(Extensible Markup Language,可扩展标记语言)作为一种数据存储和传输的标准格式,在不同系统间的数据交换中扮演着...

    dom4j解析xml详解

    ### DOM4J解析XML详解 #### 一、DOM4J简介与特性 DOM4J是一个由dom4j.org开发的开源XML解析包,专为Java平台设计,它不仅支持DOM、SAX和JAXP标准,还巧妙地融入了Java集合框架,使其成为Java开发者在处理XML数据时...

    JAVA DOM解析XML文件过程详解

    JAVA DOM 解析 XML 文件过程详解 JAVA DOM 解析 XML 文件过程详解是指使用 JAVA 语言通过 DOM(Document Object Model)解析 XML 文件的过程。DOM 是一种应用程序接口(API),它将 XML 文档转换为一个树形结构,...

    java_Dom4j解析XML详解

    Java DOM4J解析XML详解 XML(eXtensible Markup Language)是一种用于标记数据的语言,广泛应用于数据交换、配置文件和文档存储等领域。DOM4J是Java中一个强大的、轻量级的处理XML的库,它提供了丰富的API来读取、...

    JSP基于dom解析xml实例详解.docx

    本实例主要讲解如何在JSP中利用DOM解析XML文件,包括XML文件的读取、数据匹配以及数据写入。 首先,我们需要创建一个简单的User实体类,如`User`,包含姓名(name)、密码(pwd)和电子邮件(email)属性及相应的...

    dom4j解析xml详解,包含源代码,dom4j.jar包

    DOM4J是一个强大的Java库,专门用于处理XML文档。它提供了简单而灵活的API,使得在Java应用程序中读取、写入、修改以及查询...提供的源代码和解析XML详解文档将有助于进一步理解DOM4J的工作机制,并提升实际开发能力。

    DOM解析XML实例

    ### DOM解析XML实例详解 #### 一、DOM与XML解析概览 DOM(Document Object Model)是一种被广泛采用的标准,用于表示和操作XML文档。它提供了跨平台、跨语言的XML文档表示方式,使得开发人员能够以树状结构的形式...

    java_Dom4j解析XML详解.doc

    ### DOM4J解析XML详解 #### 一、DOM4J简介 DOM4J是一个由dom4j.org组织提供的开源XML解析工具包,专为Java平台设计。它支持DOM(Document Object Model)、SAX(Simple API for XML)以及JAXP(Java API for XML ...

    java解析XML详解

    在DOM解析中,整个XML文档被加载到内存中,形成一个DOM树。通过这个树结构,开发者可以遍历整个文档,对节点进行增删改查等操作。虽然DOM提供了强大的功能,但其主要缺点是对于大型XML文档,可能会消耗大量内存。 #...

    应用源码之xml-dom201311060201.zip

    《Android源码解析:DOM解析XML详解》 在Android开发中,XML作为一种常见的数据格式,被广泛用于存储和传输数据。本资料详细介绍了如何利用Java DOM解析器处理XML文档,适用于JAVA ANDROID方向的学习者,尤其对毕业...

    dom4j解析xml实例

    **DOM4J解析XML实例详解** 在Java编程中,处理XML文档是一项常见的任务。DOM4J是一个非常流行的、强大的Java XML API,它提供了灵活且高效的方式来解析、创建、修改XML文档。本文将深入探讨如何使用DOM4J进行XML...

    java_Dom4j解析XML详解.docx

    Java中的DOM4J库是一个强大的XML处理工具,它提供了对XML文档的全面支持,包括解析、操作和生成XML。DOM4J的设计遵循了Java...无论是在解析XML文件、构建XML结构,还是进行复杂的XML操作,DOM4J都能提供强大的支持。

    dom4j解析xml

    ### DOM4J解析XML知识点详解 #### 一、DOM4J简介 DOM4J是一个Java库,用于处理XML文档。它的设计目标是为了提供一个简单、易于使用的API来处理XML文件,同时保持性能上的优势。与Java标准库中的DOM实现相比,DOM4J...

    java解析xml——dom

    ### Java解析XML——DOM详解 #### 一、DOM解析概念 **Document Object Model (DOM)**是一种平台和语言中立的接口,它允许程序和脚本动态地访问和更新文档的内容、结构和样式。DOM最初是为HTML设计的,但后来也被...

    java_Dom4j解析XML详解.pdf

    DOM4J的灵活性和强大功能使其成为Java开发中处理XML的理想选择,无论是简单的读取、解析,还是复杂的构建和修改XML文档,DOM4J都能提供高效且直观的解决方案。在实际项目中,结合XPath的使用,DOM4J可以方便地定位和...

    JSP基于dom解析xml实例详解

    本实例主要讲解如何在JSP中使用DOM解析XML文件,以实现用户登录功能。 首先,我们有一个User实体类,包含了用户的基本信息,如用户名(name)、密码(pwd)和电子邮件(email)。这些属性对应于XML文件中用户节点的...

    Dom4j遍历解析XML

    ### Dom4j遍历解析XML知识点详解 #### 一、Dom4j简介及环境搭建 Dom4j(Document Object Model for Java)是一个Java语言的开源XML API,它提供了非常便捷的方式来解析、创建以及操作XML文档。相较于其他XML解析库...

    java解析XML详解.pdf

    Java解析XML技术详解: 在信息技术领域,XML(Extensible Markup Language,可扩展标记语言)是一种被广泛使用的标记语言,用于存储和传输数据。它与HTML相似,也是一种标记语言,但是HTML用于网页的格式化,而XML...

Global site tag (gtag.js) - Google Analytics