XML解析之DOM解析技术案例

前端之家收集整理的这篇文章主要介绍了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徐守威

*

*/

public classDomDemo {

public static void main(String[] args) {

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

FilexmlFile=newFile("E:\\article.xml");

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

DocumentBuilderbuilder=null;

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

DocumentBuilderFactorybuilderFactory=DocumentBuilderFactory.newInstance();

try {

//从工厂中创建DocumentBuilder对象

builder=builderFactory.newDocumentBuilder();

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

Documentdocument=builder.parse(xmlFile);

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

Elementroot= document.getDocumentElement();

//打印根元素名称

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

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

NodeListchildNodes=root.getChildNodes();

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

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

{

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

Nodenode=childNodes.item(i);

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

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

{

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

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

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

NodeListnodeDetail=node.getChildNodes();

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

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

{

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

Nodedetail=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相关文章