文档章节

XML文档,DOM解析

v
 viewsonic001
发布于 2016/09/29 20:30
字数 443
阅读 21
收藏 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文件,常见的解析xml的方式有一下三种:SAX、Pull、Dom解析方式。最近做了一个android版的CSDN阅读器,用到了其中的两种(sax,pull),今天对android解析...

球球
2016/09/24
5
0
Android 创建与解析XML(一)—— 概述

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

长平狐
2013/01/06
159
0
JAVA 中的四种解析XML方式

解析XML XML现在已经成为一种通用的数据交换格式,平台的无关性使得很多场合都需要用到XML。本文将详细介绍用Java解析 XML的四种方法。 XML现在已经成为一种通用的数据交换格式,它的平台无关性...

lee123lee
2013/08/24
0
2
Android的三种解析方式

第一种方式:DOM解析器: DOM是基于树形结构的的节点或信息片段的集合,允许开发人员使用DOM API遍历XML树、检索所需数据。分析该结构通常需要加载整个文档和构造树形结构,然后才可以检索和...

津乐
2018/01/11
0
0
xml java应用(DOM、SAX、JDOM、DOM4j)简介比较

dom是解析xml的底层接口之一(另一种是sax) 而jdom和dom4j则是基于底层api的更高级封装 dom是通用的,而jdom和dom4j则是面向java语言的 DOM 是用与平台和语言无关的方式表示 XML 文档的官方 ...

liangyx
2012/12/20
0
0

没有更多内容

加载失败,请刷新页面

加载更多

把iOS中block代码异步执行通过信号量变成同步执行

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); [self downZipFile:^(BOOL downSucceed) { dispatch_semaphore_signal(semaphore); }]; dispatch_semaphor......

壹峰
19分钟前
1
0
excel函数使用

拼接多个字段 =CONCATENATE(B2,C2,D2,E2) 通过函数把一个sheet里面的字段搂到另一个sheet F2 唯一匹配另一个sheet的字段。 www 另一个sheet的名称 H:I www这个sheet里面从H行到I行。 2 从第几...

贾峰uk
20分钟前
1
0
SpringBoot 集成 DBUnit 、database-rider与H2数据库进行单元测试

单元测试 什么是单元测试 参考维基百科: 单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在...

Tree
21分钟前
0
0
java基础知识目录

java 注解

细节探索者
24分钟前
1
0
第一个网络爬虫

准备工作 http请求头概念 1、Accept :请求报头域,用于指定客户端可接受哪些类型的信息。 2、Accept-Language :指定客户端可接受的语言类型。 3、Accept-Encoding :指定客户端可接受的内容...

轻轻的往前走
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部