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

版权声明:程序猴jwang版权所有 https://blog.csdn.net/qq_21046965/article/details/86752394

前言

      本章讲解使用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);
				}
			}
		}
	}
}

程序运行结果如下:

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

猜你喜欢

转载自blog.csdn.net/qq_21046965/article/details/86752394