文档章节

XML文档,DOM解析

v
 viewsonic001
发布于 2016/09/29 20:30
字数 443
阅读 19
收藏 1

 DOM解析模型

<?xml version="1.0" encoding="UTF-8"?>
<memo>
	<note type="birthday">
		<name>张三</name>
		<sex>男</sex>
		<date>1984</date>
	</note>
		<note type="shop">
		<name>李四</name>
		<sex>男</sex>
		<date>1984</date>
	</note>
	<note type="go">
		<name>王五</name>
		<sex>男</sex>
		<date>1984</date>
	</note>
</memo>

 

package domTest;

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;

public class DomTest {
	public static void main(String[] args)  {
		File xmlFile = new File("C:"+File.separator+"Users"+File.separator+"357"+File.separator+"Downloads"+File.separator+"memo.xml");//C:\Users\357\Downloads
		DocumentBuilder builder = null;
		
		//声明一个DocumentBuilderFactory对象,通过单例模式创建
		DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
		try {
			builder = documentBuilderFactory.newDocumentBuilder();//取得默认的DocumentBuilder
			Document document = builder.parse(xmlFile);//解析文件
			Element root= document.getDocumentElement();//获取根元素
			NodeList childNodes = root.getChildNodes();//获得根元素下的子节点
			for (int i = 0; i < childNodes.getLength(); i++) {//对每个子节点进行判断
				Node node = childNodes.item(i);
				if("note".equals(node.getNodeName())){//如果节点的名称为"note",则输出note元素熟悉type
					System.out.println("\r\n 找到一篇日记,所属分类;"+node.getAttributes().getNamedItem("type").getNodeValue()+".");
					NodeList nodeDetail = node.getChildNodes(); //获得<memo>下的节点
					for (int j = 0; j < nodeDetail.getLength(); j++) {
						//遍历<memo>下的节点
						Node detail = nodeDetail.item(j);
						switch (detail.getNodeName()) {
						case "name":
							System.out.println("姓名:"+detail.getTextContent());
							break;
						case "sex":
							System.out.println("性别:"+detail.getTextContent());
							break;
						case "date":
							System.out.println("生日:"+detail.getTextContent());
							break;

						default:
							break;
						}
						
					}
						 
				}
			}
			
		} catch (Exception e) {
			
			e.printStackTrace();
		}
		
			
			
			
			
	
	}
}

3个步骤创建XML文件对应的Document对象:

1.获取factory,代码如下:

    //声明一个DocumentBuilderFactory对象,通过单例模式创建
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

2.获取builder,代码如下:

    DocumentBuilder   builder = documentBuilderFactory.newD ocumentBuilder();//取得默认的DocumentBuilder

3.解析为Document对象, 代码如下:

    Document document = builder.parse(xmlFile);//解析文件

 

XML有哪些解析技术?区别是上面?

    有DOM,SAX,STAX等

    DOM:处理大型文件时 性能下降的非常厉害,DOM的树结构暂用的内存较多,而且DOM必须在解析文件之前把整个文档装入内存。

    SAX:事件驱动的XML解析方式。顺序读取XML文件, 

 

© 著作权归作者所有

共有 人打赏支持
v
粉丝 0
博文 52
码字总数 9151
作品 0
杭州
程序员
Android 创建与解析XML(一)—— 概述

Android 是最常用的智能手机平台,XML 是数据交换的标准媒介,Android 中可以使用标准的XML生成器、解析器、转换器 API,对 XML 进行解析和转换。 XML,相关有DOM、SAX、JDOM、DOM4J、Xerce...

长平狐
2013/01/06
149
0
XML生成和解析

1、DOM方式解析XML 给予DOM的解析方式,是把整个XML文档加载到内存,转化成DOM树,可以随机的访问DOM树的任何数据,速度快、比较灵活,但是消耗资源比较多,不适用大的xml文档解析,测试超过...

祁猛
2016/10/19
24
0
JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较

JAVA解析XML的方式DOM、SAX、DOM4J、JDOM、StAX之详解与比较 1.各种方式的详解 1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的 官方W3C标准。DOM是以层次结构组织...

_xiaotudou
2014/03/28
221
0
android xml解析的三种方式

在android开发中,经常用到去解析xml文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析...

球球
2016/09/24
5
0
四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SA...

Henrykin
2016/11/03
48
0

没有更多内容

加载失败,请刷新页面

加载更多

Win10内部更新:警告用户别用chrome和Firefox

简评:别和 Chrome 和 Firefox 约行不,我 Edge 明明更美、屁股更翘、更性感。。。 微软正在测试 Windows 10 的一个更新:警告用户不要安装 Chrome 和 Firefox。是测试人员发现的这个新警告,...

极光推送
33分钟前
2
0
Java并发编程高阶技术 高性能并发框架源码解析与实战

全网唯一深度解析并发编程框架disruptor底层源码课程,助你成为并发编程高手,拿下高薪 网盘地址下载

qq__2304636824
今天
1
0
day92-20180918-英语流利阅读-待学习

健身最大的敌人不是懒惰,而是逞强 Daniel 2018-09-19 1.今日导读 还记得 2008 年北京奥运会运动员刘翔的退赛风波吗?那天几乎所有中国人都将视线聚焦在了鸟巢体育馆 110 米栏的项目上,迫不...

飞鱼说编程
今天
8
0
70.shell的函数 数组 告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析 20.16/20.17 shell中的函数: ~1. 函数就是把一段代码整理到了一个小单元中,并给这个小单元起一个名字,当用到这段...

王鑫linux
今天
3
0
分布式框架spring-session实现session一致性使用问题

前言:项目中使用到spring-session来缓存用户信息,保证服务之间session一致性,但是获取session信息为什么不能再服务层获取? 一、spring-session实现session一致性方式 用户每一次请求都会...

WALK_MAN
今天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部