XML解析之DOM解析技术案例

Java代码:

package com.xushouwei.xml;

import java.io.File;

import javax.xml.parsers.DocumentBuilder;

import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

import org.w3c.dom.Element;

import org.w3c.dom.Node;

import org.w3c.dom.NodeList;

/**

* DOM解析XML数据

* 原理:

* DOM解析(Document Object Mode)是一种基于对象的API,它把XML的内容加载到内存中,生成一个与XML文档内容相应的对象模型,当解析完成时候,内存中会生成与XML文档结构对应的DOM树象树,这样便能够根据树的结构,以节点形式来对文档进行操作。

* @author徐守威

*

*/

publicclass DomDemo {

publicstaticvoid main(String[] args) {

//创建解析XML文档对象,其保存在E盘的根目录下的article.xml

File xmlFile=new File("E:\\article.xml");

//声明一个DocumentBuilder对象,抽象类不能直接构建,可以通过DocumengBuilderFactory来构建,DocumentBuilder就是留创建Document用的啦

DocumentBuilder builder=null;

//声明一个DocumentBuilderFactory对象,抽象类,通过单例模式创建,DocumentBuilderFactory可以生产DocumentBuilder对象,就可以根据需求去解析已有xml文件(parse)或者创建新的document文件(newDocument)。

DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();

try {

//从工厂中创建DocumentBuilder对象

builder=builderFactory.newDocumentBuilder();

//创建Document对象使用DocumentBuilder解析xml文件,这在里我们已经在内存中形成一个文档对象模型,接下来我们就要对文档模型进行一一解析

Document document=builder.parse(xmlFile);

//首先我们要获取根元素,这里我们使用Element对象作为元素对象

Element root= document.getDocumentElement();

//打印根元素名称

System.out.println("根元素名称root:"+root.getNodeName());

//获取根元素下面的子节点,返回成节点集合数组对象

NodeList childNodes=root.getChildNodes();

//遍历子节点并对每个子节点进行判断

for(int i=0;i<childNodes.getLength();i++)

{

//从节点集合数组对象中获取每个节点,并返回真正的节点对象

Node node=childNodes.item(i);

//对每个子节点记性判断

if("article".equals(node.getNodeName()))

{

//如果节点名称为article,则输出article元素属性category

System.out.println("\r\n找到一篇文章,所属分类:"+node.getAttributes().getNamedItem("category").getNodeValue()+".");

//获取article节点下的子节点,并返回节点集合数组对象

NodeList nodeDetail=node.getChildNodes();

//循环遍历article节点下面的子节点

for(int j=0;j<nodeDetail.getLength();j++)

{

//从子节点集合数组对象中获取具体节点,并返回节点对象

Node detail=nodeDetail.item(j);

//获取article元素下的每个子节点

if("title".equals(detail.getNodeName()))

{

//输出tile

System.out.println("标题:"+detail.getTextContent());

}

elseif("author".equals(detail.getNodeName()))

{

//输出author

System.out.println("作者:"+detail.getTextContent());

}

elseif("email".equals(detail.getNodeName()))

{

//输出email

System.out.println("邮件:"+detail.getTextContent());

}

elseif("date".equals(detail.getNodeName()))

{

//输出author

System.out.println("日期:"+detail.getTextContent());

}

}

}

}

} catch (Exception e) {

// TODO: handle exception

e.printStackTrace();

}

}

}

XML代码:

<?xml version="1.0" encoding="GB2312"?>

<articles>

<article category="Android">

<title>Android学习之路</title>

<author>徐守威</author>

<email>[email protected]</email>

<date>2016-05-20</date>

</article>

<article category="JavaWeb">

<title>JavaWeb学习笔记</title>

<author>Jasxu</author>

<email>[email protected]</email>

<date>2016-05-21</date>

</article>

</articles>

时间: 2024-10-12 06:10:46

XML解析之DOM解析技术案例的相关文章

Java学习总结(21)——XML文档解析:DOM解析,SAX解析

一.XML简介1.可扩展性标记语言(eXtensible Markup Language)2.XML用于描述数据3.应用场合:(1)持久化存储数据(2)数据交换(3)数据配置4.XML语法(1)文档类型:在编写XML文档时,需要先使用文档声明,声明XML文档的类型.最简单的声明语法:<?Xml version="1.0" ?>用encoding属性说明文档的字符编码:<?Xml version="1.0" encoding="GB2312

Java---XML的解析(1)-DOM解析

本章只讲DOM解析.接下来还会学习Dom4j和StAX 解析技术 DOM解析: DOM解析一次将所有的元素全部加载到内存中:如有以下XML文档: <user> <name>Jack</name> <age>30</age> </user> 由于DOM解析,一次性的将所有元素(包含属性和文本) 全部加载到内存中,所以不适用于解析大量的数据. JAXP-DOM解析: 包: javax.xml.parse – 关键类DocumentBuil

JavaWeb-05 XML基础(Dom解析和Sax解析)

JavaWeb-05 JavaWeb-XML基础(Dom解析和Sax解析) 一.XML的概述(了解) eXtensible Markup Language 可扩展标记语言 宗旨是传输数据,而非显示数据. XML标签没有被预定义,需要用户自行定义标签. XML技术是W3C组织(WorldWideWeConsortium万维网联盟)发布的,目前遵循的是W3C组织于2000年发布的XML1.0规范. 作用: a. 传输数据 b. 配置文件(主要用途) XML技术用于解决什么问题? a. XML语言出现

xml解析之----DOM解析

DOM模型(documentobject model) ?DOM解析器在解析XML文档时,会把文档中的全部元素.依照其出现的层次关系.解析成一个个Node对象(节点). ?在dom中.节点之间关系例如以下: ?位于一个节点之上的节点是该节点的父节点(parent) ?一个节点之下的节点是该节点的子节点(children) ?同一层次,具有同样父节点的节点是兄弟节点(sibling) ?一个节点的下一个层次的节点集合是节点后代(descendant) 父.祖父节点 lNode对象提供了一系列常量来

XML文件解析之DOM解析

XML文件是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.基本的解析方式包括DOM解析和SAX解析,具体来说包括DOM解析,SAX解析,DOM4J解析以及JDOM解析,首先来讲下DOM解析的具体实现方式: 1.重要的对象 DocumentBuilderFactory: 创建文档解析器的工厂对象 DocumentBuilder :得到文档解析器对象,由工长对象获取 Document :文档对象 2.解析XML实现方式 XML文件: <?xml v

java中的xml简介与DOM解析xml

1. xml简介 XML:指可扩展标记语言, Extensible Markup Language:类似HTML.XML的设计宗旨是传输数据,而非显示数据. 一个xml文档实例: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <company name="Tencent" address="深圳市南山区"> 3 <department deptNo=&quo

XML解析中DOM解析如何使用第三方的类库

* DOM解析使用Google提供的一个开源高效的XML解析工具GDataXMLNode,他的效果要比NSXMLParser要快10倍 使用方式: 1:先倒入系统动态链接库 libxml2.2.dylib 在项目的Targets – Summary – Linked Frameworks and Libraries或者在Targets – Build Phases – Link Binary With Libraries添加libxml2.2.dylib 2:在bulidSettings中的He

SAX解析与DOM解析

SAX解析实例:http://www.iteye.com/topic/763895 Java Sax解析是按照xml文件的顺序一步一步的来解析,在解析xml文件之前,我们要先了解xml文件的节点的种类,一种是ElementNode,一种是TextNode. 为了更好地解决大型 XML 处理的问题,Java 开发人员发明了 SAX.SAX 采用事件驱动的方式来处理 XML,它的处理方式是:为每一个元素.属性.内容(这些都认为是事件)定义一个回调方法,这个回调方法由应用程序提供.解析器以数据流的方式

xml 数据的 DOM 解析方式

需要使用第三方工具 #import "GDataXMLNode.h" // 懒加载,使用的时候在进行初始化 // 相对而言的是属性才有懒加载,需要重写getter方法 - (NSMutableArray *)xmlDOMArray { if (_xmlDOMArray == nil) { _xmlDOMArray = [NSMutableArray array]; } return _xmlDOMArray; } @property (nonatomic, strong) NSMuta