文档章节

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
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
XML生成和解析

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

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

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

Henrykin
2016/11/03
48
0
Java 处理 XML 的三种主流技术及介绍

XML (eXtensible Markup Language) 意为可扩展标记语言,它已经是软件开发行业中大多数程序员和厂商用以选择作为数据传输的载体。本文作者对于 Java 处理 XML 的几种主流技术进行一些总结和介...

IBMdW
2012/08/14
7.4K
15

没有更多内容

加载失败,请刷新页面

加载更多

linux-scp 远程拷贝报错原因

刚拿到一台重装后的服务器,远程ssh都正常,但是一scp拷贝东西就报错: 本地确定是有scp命令的,而且如果是本地没有scp不会报后面那句lost connection,因此就是远程没有scp这个命令。因此在...

linuxprobe16
10分钟前
0
0
OSChina 周六乱弹 —— 谁小时候没当过熊孩子呀

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @小小编辑:推荐歌曲《行尸走肉》- amazarashi 《行尸走肉》- amazarashi 手机党少年们想听歌,请使劲儿戳(这里) @神话 :周五了,周末干啥...

小小编辑
35分钟前
23
1
docker部署springboot项目

安装docker 菜鸟教程 springboot项目 maven依赖 <?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001......

yimingkeji
今天
14
0
1: Cordova 配置WebView可以打开外部链接

一、问题:在使用Cordova生成的Android App中默认情况下WebView中的超链接,如果不是相对链接,会默认使用浏览器打开。 如果想用默认webview打开 解决方案:修改config.xml文件添加链接配置节...

wecloudnet
今天
1
0
Beetl介绍以及集成SpringBoot2.0 ---《Beetl视频课程》(1)

目的:引导阅读官方文档 目标:实现一个自己的博客 一、Beetl介绍 Beetl目前版本是2.9.3,相对于其他java模板引擎,具有功能齐全,语法直观,性能超高,以及编写的模板容易维护等特点。使得开发...

Gavin-King
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部