XML入门(四)使用STAX解析XML

本文详细介绍了使用STAX解析XML文件的方法,通过具体实例演示了如何读取XML文档的元素和属性,完成XML数据的解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

      本章讲解使用STAX解析XML文件

方法

1.概念

在我们XML解析技术发展的过程中,诞生了很多优秀的解析技术,如:DOM、SAX、JDOMDom4J、STAX等

这里我们来讲解一下STAX解析XML文档的方法!

2.使用STAX解析XML

1)准备如下xml文件放在src目录下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE note SYSTEM "hello.dtd"> 
<note type="local">
	<to>George</to>
	<from>John</from>
	<heading>Reminder</heading>
	<body>Don't forget the meeting!</body>
</note>

2)编写如下代码解析我们的xml文件

package cn.edu.ccut.test;

import java.io.FileReader;
import java.util.Iterator;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;

import org.junit.Test;

public class TestSTAX {

	@Test
	public void testSTAX() throws Exception{
		//创建XML流工厂
		XMLInputFactory factory = XMLInputFactory.newInstance();
		//创建XML事件读取流
		XMLEventReader reader = factory.createXMLEventReader(new FileReader("src/hello.xml"));
		while(reader.hasNext()){
			XMLEvent event = reader.nextEvent();
			//如果是开始元素
			if(event.isStartElement()){
				//获取开始元素
				StartElement start = event.asStartElement();
				String name = start.getName().toString();
				//获取属性
				Iterator iterator = start.getAttributes();
				while (iterator.hasNext()) {
					Attribute obj = (Attribute)iterator.next();
					System.out.println(obj.getName()+":"+obj.getValue());
				}
				System.out.println("<"+name+">");
			}
			//如果是文本
			if(event.isCharacters()){
				//获取文本值
				String str =  event.asCharacters().getData();
				if(!"".equals(str.trim())){
					System.out.println(str);
				}
			}
		}
	}
}

程序运行结果如下:

可以说,基本上解析了全部的内容,完成了预期的功能 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值