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>shouweixu@foxmail.com</email>
<date>2016-05-20</date>
</article>
<article category="JavaWeb">
<title>JavaWeb学习笔记</title>
<author>Jasxu</author>
<email>shouweixu@qq.com</email>
<date>2016-05-21</date>
</article>
</articles>
XML解析之DOM解析技术案例的更多相关文章
- Java---XML的解析(1)-DOM解析
本章只讲DOM解析.接下来还会学习Dom4j和StAX 解析技术 DOM解析: DOM解析一次将所有的元素全部加载到内存中:如有以下XML文档: <user> <name>Ja ...
- XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
- android XML解析之DOM解析方式
DOM 解析方式步骤: 第一步:首选需要获得DOM解析器工厂实例 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance ...
- xml的SAX解析和dom解析的区别
一,区别 DOM解析 SAX解析 原理: 一次性加载xml文档,不适合大容量的文件读取 原理: 加载一点,读取一点,处理一点.适合大容量文件的读取 DOM解析可以任意进行增删改成 SAX解析只能读取 ...
- Java解析XML文档——dom解析xml
一.前言 用Java解析XML文档,最常用的有两种方法:使用基于事件的XML简单API(Simple API for XML)称为SAX和基于树和节点的文档对象模型(Document Object M ...
- xml解析之----DOM解析
DOM模型(documentobject model) •DOM解析器在解析XML文档时,会把文档中的全部元素.依照其出现的层次关系.解析成一个个Node对象(节点). •在dom中.节点之间关系例如 ...
- XML文件解析之DOM解析
XML文件是一种通用的数据交换格式,它的平台无关性,语言无关性,系统无关性,给数据集成与交互带来了极大的方便.基本的解析方式包括DOM解析和SAX解析,具体来说包括DOM解析,SAX解析,DOM4J解 ...
- 2.3 使用 dom4j 对 xml文件进行 dom 解析
// 使用dom4j对XML文档进行解析 CRUD public class Demo1 { //读取XML文档中第二本书的书名 <书名>javaWEB</书名> @Test ...
- java拾遗1----XML解析(一) DOM解析
XML解析技术主要有三种: (1)DOM(Document Object Model)文档对象模型:是 W3C 组织推荐的解析XML 的一种方式,即官方的XML解析技术. (2)SAX(Simple ...
随机推荐
- Cisco设备IOS的恢复方法 两种方法
如果不小心把Router或者Switch的IOS删除了,特别是Flash中的IOS和ROM中的Mini IOS都没有了的话,连启动都不行的话,有什么方法恢复它呢?答案是方法不只一种,而是两种.其实是我 ...
- Android Security
Android Security¶ 确认签名¶ Debug签名: $ jarsigner -verify -certs -verbose bin/TemplateGem.apk sm 2525 Sun ...
- UINavigationItem不显示
效果如图: 代码: self.navigationItem.leftBarButtonItem = [UIBarButtonItem itemWithNormalImage:@"MainTa ...
- [转]读取assets目录下的数据库文件
在做Android应用的时候,不可避免要用到数据库.但是当我们把应用的apk部署到真机上的时候,已经创建好的数据库及其里边的数据是不能随着apk一起安装到真机上的. (PS:这篇博客解决了我前面博客中 ...
- vi set number E486:Pattern not found:
先输入:/* 按回车键,然后再输入之前的的命令.
- FZU Problem 2221 RunningMan(贪心)
一开始就跑偏了,耽误了很长时间,我和队友都想到博弈上去了...我严重怀疑自己被前几个博弈题给洗脑了...贪心的做法其实就是我们分两种情况,因为A先出,所以B在第一组可以选择是赢或输,如果要输,那直接不 ...
- 2015 HDU 计算机学院 院赛 1003 玩骰子
Problem Description Nias与Ains都特别喜欢玩骰子,而且都自以为比对方玩得更溜. 终于有一天,他们决定用骰子来一决高下! 一般的骰子玩法已经不足以体现他们的水平了,于是 ...
- 防止aspx木马的IIS SPY变态功能
防止aspx木马的IIS SPY变态功能 如果服务器支持aspx语言,而且被上传了aspx木马,利用木马里面的IIS SPY 功能,可以读出IIS里面的所有用户的密码,包括用IIS做FTP的,也能读出 ...
- Chapter 1 First Sight——6
"You didn't need to do that, Dad. I was going to buy myself a car." 你不需要这样,父亲,我会自己买一辆车的 &q ...
- HTML之禁止输入文本
一个文本框,禁止输入文本有2个方式,一个是利用readonly ,一个是利用 disabled. 那么两者虽然目的都可以达到,但是从表现上来看disabled会显得更加的直观,为什么这么说. 请看截图 ...