遍历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库的使用,一个Java平台上的XML处理库。 JDOM是Java Document Object Model的缩写,它是为了解决DOM(Document Object Model)在Java中的性能问题而设计的。JDOM提供...
本文将深入探讨XML的入门知识,包括XML的解析与创建,以及通过不同方式操作XML文件的方法。 首先,让我们理解XML的基本结构。XML文档由元素构成,每个元素都有开始标签和结束标签,例如`内容</element>`。元素可以...
JDOM是专门为Java设计的XML解析库,它提供了一种与DOM类似的API,但性能更好,因为它是完全用Java实现的,没有依赖底层的平台实现。JDOM支持两种解析模式:SAXBuilder(类似SAX)和Builder(类似DOM)。JDOM简化了...
XML解析 - **SAX**:基于事件驱动的解析方式,适用于大型文档。 - **DOM**:将整个文档加载到内存中的树结构,适用于频繁访问和修改文档的情况。 - **DOM4j/JDOM**:开源库,提供了更简便的API来操作XML文档,支持...
本文将详细介绍四种主流的Java XML处理库:DOM4J、DOM、JDOM和SAX,并通过简单的代码示例帮助初学者入门。 1. DOM (Document Object Model) DOM是W3C制定的一种标准,它将XML文档视为一个树形结构,允许开发者通过...
### 无废话XML:XML入门知识点详解 #### 一、XML简介 XML(Extensible Markup Language,可扩展标记语言)是一种用于标记数据的语言,它的设计目的是传输和存储数据。与HTML相似,XML同样使用标签来定义文档结构,...
SAX(Simple API for XML)是XML解析的一种方法,主要适用于处理大型XML文档,因为它采用事件驱动模型,以流式读取XML数据,不会一次性加载整个文档到内存,从而节省资源。 SAX解析的基本工作原理是:当解析器读取...
通过这个示例,我们可以看到 JDOM 提供了简洁的 API 来进行 XML 的读写操作,使得开发者无需深入了解 XML 解析底层机制,就能高效地处理 XML 文档。对于初学者来说,这是一个很好的起点,可以快速上手 XML 的处理。
2. **XML解析**:通过DOM解析器,你可以加载整个XML文档到内存并进行遍历和修改;SAX解析器则采用事件驱动的方式,逐行读取,适合处理大型XML文件;StAX允许程序按需读取或写入XML事件,提供了更高效的处理方式。 3...
XML解析器读取XML文档并转换为数据结构,供应用程序使用。有两种类型的解析器:DOM(Document Object Model)和SAX(Simple API for XML)。DOM一次性加载整个文档到内存,适合小规模文档;SAX是事件驱动,逐行读取...
在“Java_XML入门手册”中,你将找到关于这些方法的详细介绍,包括如何创建解析器、如何读写XML文件、如何处理XML节点以及如何比较不同方法的优缺点。通过学习这个手册,你可以快速掌握Java操作XML的基础,为后续的...
8. **DOM4J和JDOM**:在Java开发中,DOM4J和JDOM是常用的XML处理库,提供了方便的API进行XML解析、操作和生成。 9. **XML与JSON**:虽然XML功能强大,但JSON因其简洁性和易用性在现代Web应用中更为流行。两者各有...
2. **XML解析方式**:dom4j提供了两种主要的XML解析方式:SAX(Simple API for XML)和DOM(Document Object Model)。SAX是流式解析,适用于处理大型XML文件;DOM则是将整个XML文档加载到内存,适合小型或中型文档...
5. **解析器**:XML解析器是读取和处理XML文档的软件,分为DOM(Document Object Model)解析器和SAX(Simple API for XML)解析器。DOM将整个XML文档加载到内存中形成一棵树形结构,方便访问;SAX则是事件驱动的,...
dom4j 目录的介绍: 1)docs 是文档目录 2)如何查 Dom4j 的文档 3)Dom4j 快速入门 2)lib 目录 ...第三方的解析: jdom 在 dom 基础上进行了封装、 dom4j 又对 jdom 进行了封装。 pull 主要用在 And
DOM4J是一款强大的Java XML API,它提供了丰富的DOM、SAX、JDOM等接口,使得处理XML文档变得更为便捷。在本文中,我们将深入探讨DOM4J的基础用法,帮助初学者快速入门。 **1. 安装与引入** 在开始使用DOM4J之前,...
它不仅支持JDOM API,还提供了一种更高级的树形模型,使得XML操作更为简单。 **2. 基本概念** - **Element**: 表示XML元素,是XML文档的核心部分。 - **Attribute**: 表示XML属性,附加在元素上提供额外信息。 - **...
本教程将深入讲解XML的增删查改操作,非常适合初学者入门学习。 ### XML基本结构 1. **元素(Element)**:XML文档的核心组成部分,用尖括号包围,如 `<element>` 和 `</element>`,表示一个开始和结束的元素。...
- Apache Xerces:强大的XML解析库,支持DOM、SAX和XML Schema解析。 - Transformer:Java标准库中的类,用于将DOM树转换成其他格式,如HTML或文本。 5. XPath和XSLT - XPath:用于在XML文档中查找信息的语言,...
二、XML读取 读取XML文档通常使用DOM(Document Object Model)或SAX(Simple API for XML)模型。DOM将整个XML文档加载到内存中形成一个树形结构,方便操作;SAX则采用事件驱动的方式,逐行解析,适合处理大文件。 ...