`

XML解析入门之JDOM(二)

    博客分类:
  • xml
 
阅读更多

遍历DOM

 

package com.liuc.test;

import java.io.File;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;

import org.jdom2.Attribute;
import org.jdom2.Comment;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.JDOMException;
import org.jdom2.Namespace;
import org.jdom2.input.SAXBuilder;

public class XmlIterator {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		interatorXML(new File("person.xml"));
	}

	/**
	 * Element类的getContent()方法返回一个List对象
	 * 它包括了一个元素的所有内容:注释、属性、处理指令、
	 * 文本和子元素。利用它我们可以遍历XML文档
	 * @param xmlFile
	 */
	public static void interatorXML(File xmlFile){
		
		try {
			SAXBuilder sax=new SAXBuilder();
			Document document=sax.build(xmlFile);
			prcess(document.getRootElement());
		} catch (JDOMException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
	}

	private static void prcess(Element element) {
		inspect(element);
		List contentList=element.getContent();
		Iterator it=contentList.iterator();
		while(it.hasNext()){
			Object o=it.next();
			if (o instanceof Element) {
				Element child=(Element)o;
				prcess(child);
			}else if(o instanceof Comment){
				Comment c=(Comment) o;
				System.out.println(c.getText());
				System.out.println();
			}
		}
	}

	private static void inspect(Element element) {
		if(!element.isRootElement()){
			System.out.println();
		}
		
		String qualifiedName=element.getQualifiedName();
		System.out.println(element.getName()+":"+element.getText());
		Namespace namespace=element.getNamespace();
		if (namespace!=Namespace.NO_NAMESPACE) {
			String localName=element.getName();
			String uri=element.getNamespaceURI();
			String prefix=element.getNamespacePrefix();
			System.out.println("  Local name: "+localName); 
            System.out.println("  Namespace URI: "+uri); 
			
            if (!"".equals(prefix)) {
				System.out.println("NameSpace prefix"+prefix);
			}
		}
		
		List attList=element.getAttributes();
		if (!attList.isEmpty()) {
			Iterator it=attList.iterator();
			while(it.hasNext()){
				Attribute attribute=(Attribute) it.next();
				String name=attribute.getName();
				String value=attribute.getValue();
				Namespace attributeNamespace=attribute.getNamespace();
				if (attributeNamespace==Namespace.NO_NAMESPACE) {
					System.out.println("  "+name+ "=\""+value+ "\"");
				}else {
					String prefix=attributeNamespace.getPrefix();
					 System.out.println("  "+prefix+":"+name+"=\""+value+"\""); 
				}
			}
		}
		
		List namespaceList=element.getAdditionalNamespaces();
		if (!namespaceList.isEmpty()) {
			Iterator iterator=namespaceList.iterator();
			while(iterator.hasNext()){
				Namespace additional=(Namespace) iterator.next();
				String uri=additional.getURI();
				String prefix=additional.getPrefix();
				System.out.println("  xmlns:"+prefix+"=\""+uri+"\""); 
			}
		}
	}
}
XML文件
<?xml version="1.0" encoding="UTF-8"?>
<persons>
  <person perid="1001">
    <name>zhangsan</name>
    <age>89</age>
    <address>安徽淮北</address>
    <sex>男</sex>
  </person>
  <person perid="1002">
    <name>lisi</name>
    <age>56</age>
    <address>北京海淀</address>
    <sex>女</sex>
  </person>
</persons>

分享到:
评论

相关推荐

    XML解析入门之JDOM(一)

    本篇主要介绍XML解析的基础知识,特别是针对JDOM库的使用,一个Java平台上的XML处理库。 JDOM是Java Document Object Model的缩写,它是为了解决DOM(Document Object Model)在Java中的性能问题而设计的。JDOM提供...

    xml入门 解析与创建 入门练习

    本文将深入探讨XML的入门知识,包括XML的解析与创建,以及通过不同方式操作XML文件的方法。 首先,让我们理解XML的基本结构。XML文档由元素构成,每个元素都有开始标签和结束标签,例如`内容&lt;/element&gt;`。元素可以...

    生成、解析xml的四种方式(dom,dom4j,sax,jdom)

    JDOM是专门为Java设计的XML解析库,它提供了一种与DOM类似的API,但性能更好,因为它是完全用Java实现的,没有依赖底层的平台实现。JDOM支持两种解析模式:SAXBuilder(类似SAX)和Builder(类似DOM)。JDOM简化了...

    xml入门教程/xml入门教程

    XML解析 - **SAX**:基于事件驱动的解析方式,适用于大型文档。 - **DOM**:将整个文档加载到内存中的树结构,适用于频繁访问和修改文档的情况。 - **DOM4j/JDOM**:开源库,提供了更简便的API来操作XML文档,支持...

    一写小例子,dom4J,dom,jdom,sax解析和创建XML文件,代码虽然简单,但是功能实现,适合入门

    本文将详细介绍四种主流的Java XML处理库:DOM4J、DOM、JDOM和SAX,并通过简单的代码示例帮助初学者入门。 1. DOM (Document Object Model) DOM是W3C制定的一种标准,它将XML文档视为一个树形结构,允许开发者通过...

    无废话XML XML入门

    ### 无废话XML:XML入门知识点详解 #### 一、XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记数据的语言,它的设计目的是传输和存储数据。与HTML相似,XML同样使用标签来定义文档结构,...

    XML——sax解析 极速入门易懂示例

    SAX(Simple API for XML)是XML解析的一种方法,主要适用于处理大型XML文档,因为它采用事件驱动模型,以流式读取XML数据,不会一次性加载整个文档到内存,从而节省资源。 SAX解析的基本工作原理是:当解析器读取...

    jdom操作xml的文档

    通过这个示例,我们可以看到 JDOM 提供了简洁的 API 来进行 XML 的读写操作,使得开发者无需深入了解 XML 解析底层机制,就能高效地处理 XML 文档。对于初学者来说,这是一个很好的起点,可以快速上手 XML 的处理。

    xml入门案例源码

    2. **XML解析**:通过DOM解析器,你可以加载整个XML文档到内存并进行遍历和修改;SAX解析器则采用事件驱动的方式,逐行读取,适合处理大型XML文件;StAX允许程序按需读取或写入XML事件,提供了更高效的处理方式。 3...

    inside xml xml编程从入门到精通

    XML解析器读取XML文档并转换为数据结构,供应用程序使用。有两种类型的解析器:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个文档到内存,适合小规模文档;SAX是事件驱动,逐行读取...

    Java_XML入门(文档+四种操作XML方式程序)

    在“Java_XML入门手册”中,你将找到关于这些方法的详细介绍,包括如何创建解析器、如何读写XML文件、如何处理XML节点以及如何比较不同方法的优缺点。通过学习这个手册,你可以快速掌握Java操作XML的基础,为后续的...

    XML编程从入门到精通(PDF)

    8. **DOM4J和JDOM**:在Java开发中,DOM4J和JDOM是常用的XML处理库,提供了方便的API进行XML解析、操作和生成。 9. **XML与JSON**:虽然XML功能强大,但JSON因其简洁性和易用性在现代Web应用中更为流行。两者各有...

    dom4j-jar与dom4j解析xml文档介绍

    2. **XML解析方式**:dom4j提供了两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是流式解析,适用于处理大型XML文件;DOM则是将整个XML文档加载到内存,适合小型或中型文档...

    XML.rar(里面两本书:XML编程从入门到精通.pdf--xml_基础学习完全手册.chm)都是【高清晰】

    5. **解析器**:XML解析器是读取和处理XML文档的软件,分为DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。DOM将整个XML文档加载到内存中形成一棵树形结构,方便访问;SAX则是事件驱动的,...

    dom4j-1.6.1 + w3cschool.CHM离线帮助文档

    dom4j 目录的介绍: 1)docs 是文档目录 2)如何查 Dom4j 的文档 3)Dom4j 快速入门 2)lib 目录 ...第三方的解析: jdom 在 dom 基础上进行了封装、 dom4j 又对 jdom 进行了封装。 pull 主要用在 And

    dom4j入门例子

    DOM4J是一款强大的Java XML API,它提供了丰富的DOM、SAX、JDOM等接口,使得处理XML文档变得更为便捷。在本文中,我们将深入探讨DOM4J的基础用法,帮助初学者快速入门。 **1. 安装与引入** 在开始使用DOM4J之前,...

    dom4j各种中文api解析

    它不仅支持JDOM API,还提供了一种更高级的树形模型,使得XML操作更为简单。 **2. 基本概念** - **Element**: 表示XML元素,是XML文档的核心部分。 - **Attribute**: 表示XML属性,附加在元素上提供额外信息。 - **...

    XML增删查改

    本教程将深入讲解XML的增删查改操作,非常适合初学者入门学习。 ### XML基本结构 1. **元素(Element)**:XML文档的核心组成部分,用尖括号包围,如 `&lt;element&gt;` 和 `&lt;/element&gt;`,表示一个开始和结束的元素。...

    XML-Example-in-java:XML 教学、技术入门及应用

    - Apache Xerces:强大的XML解析库,支持DOM、SAX和XML Schema解析。 - Transformer:Java标准库中的类,用于将DOM树转换成其他格式,如HTML或文本。 5. XPath和XSLT - XPath:用于在XML文档中查找信息的语言,...

    用排序的调实现对XML的读写

    二、XML读取 读取XML文档通常使用DOM(Document Object Model)或SAX(Simple API for XML)模型。DOM将整个XML文档加载到内存中形成一个树形结构,方便操作;SAX则采用事件驱动的方式,逐行解析,适合处理大文件。 ...

Global site tag (gtag.js) - Google Analytics