import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import javax.xml.stream.XMLEventReader;
import javax.xml.stream.XMLInputFactory;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.events.Attribute;
import javax.xml.stream.events.EndElement;
import javax.xml.stream.events.StartElement;
import javax.xml.stream.events.XMLEvent;
public class StaXParser {
static final String ENTRY = "entry";
static final String CANFORM = "canForm";
static final String ABBREV = "abbrev";
static final String SYNONYM = "depSynonym";
static final String MONO = "mono";
static final String CROSSREFER = "crossRefer";
static final String KEYDC = "keyDC";
@SuppressWarnings({ "unchecked", "null" })
public List<SAPTerm> readConfig(String configFile) {
List<SAPTerm> terms = new ArrayList<SAPTerm>();
try {
// First create a new XMLInputFactory
XMLInputFactory inputFactory = XMLInputFactory.newInstance();
// Setup a new eventReader
InputStream in = new FileInputStream(configFile);
XMLEventReader eventReader = inputFactory.createXMLEventReader(in);
// Read the XML document
SAPTerm term = null;
SAPTermMono mono = null;
SAPTermCrossRefer crossRefer = null;
while (eventReader.hasNext()) {
XMLEvent event = eventReader.nextEvent();
if (event.isStartElement()) {
// StartElement startElement = ;
// If we have a item element we create a new item
StartElement startElement = event.asStartElement();
// If we have a item element we create a new item
if (startElement.getName().getLocalPart() == (ENTRY)) {
term = new SAPTerm();
continue;
}
// mono
if (startElement.getName().getLocalPart() == (MONO)) {
mono = new SAPTermMono();
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (SYNONYM)) {
event = eventReader.nextEvent();
mono.addDepSynonym(event.asCharacters().getData());
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (ABBREV)) {
event = eventReader.nextEvent();
mono.addAbbrevs(event.asCharacters().getData());
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (CROSSREFER)) {
crossRefer = new SAPTermCrossRefer();
continue;
// event = eventReader.nextEvent();
}
if (startElement.getName().getLocalPart() == (CANFORM)) {
event = eventReader.nextEvent();
if (mono.getCanForm() == null) {
mono.setCanForm(event.asCharacters().getData());
} else {
crossRefer.setCanForm(event.asCharacters()
.getData());
}
continue;
}
}
// If we reach the end of an item element we add it to the
// list
if (event.isEndElement()) {
EndElement endElement = event.asEndElement();
if (endElement.getName().getLocalPart() == (MONO)) {
term.setMono(mono);
continue;
}
if (endElement.getName().getLocalPart() == (CROSSREFER)) {
term.addCrossRefers(crossRefer);
continue;
}
if (endElement.getName().getLocalPart() == (ENTRY)) {
terms.add(term);
continue;
}
}
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (XMLStreamException e) {
e.printStackTrace();
}
return terms;
}
}
分享到:
相关推荐
`stax-api.jar`是Java中用于处理XML流的STAX(Streaming API for XML)的API接口库,它提供了与XML数据交互的一套标准化接口。 STAX(Streaming API for XML)是一种低级别的XML解析方法,相比DOM(Document Object...
STAX(Streaming API for XML)是Java平台上的一个XML处理API,它提供了对XML文档的事件驱动解析。与DOM(Document Object Model)不同,STAX不是加载整个XML文档到内存中形成一个树形结构,而是通过事件(如开始...
**STAX API 1.0-2:XML处理的关键组件** STAX,全称为Streaming API for XML,是一种用于处理XML的Java API。STAX提供了一种流式处理XML文档的方法,与DOM(Document Object Model)相比,它更加高效且内存占用更低...
STAX(Streaming API for XML)是一种用于处理XML的Java API,它提供了事件驱动的解析方式,使得开发者可以高效地读取和写入XML文档。在Java世界中,STAX提供了比DOM(Document Object Model)更高效的处理XML的方式...
赠送jar包:stax2-api-3.1.4.jar; 赠送原API文档:stax2-api-3.1.4-javadoc.jar; 赠送源代码:stax2-api-3.1.4-sources.jar; 赠送Maven依赖信息文件:stax2-api-3.1.4.pom; 包含翻译后的API文档:stax2-api-...
《STAX EX 1.8.3:深入解析Java XML处理库》 在Java编程领域,XML(Extensible Markup Language)作为一种数据交换和存储格式,广泛应用于各种应用场景。处理XML时,Java提供了多种API,其中STAX(Streaming API ...
STAX(Streaming API for XML)是Java平台上的一个XML处理API,它提供了高效且灵活的方式来读取和写入XML文档。STAX的核心理念是事件驱动,即解析XML时,每遇到一个XML元素或属性,都会触发一个相应的事件,程序通过...
在"jaxb+stax+demo"的示例中,通常会展示如何结合JAXB和STAX来高效地解析和生成XML。具体步骤可能包括以下几点: 1. **定义Java类**:首先,我们需要创建一些Java类,这些类将代表XML文档中的元素和属性。JAXB使用...
stax-ex-1.8.jarstax-ex-1.8.jarstax-ex-1.8.jar
**StaxMate与STAX2 1.3.0.jar包详解** 在Java开发中,处理XML文档是一项常见的任务。为了高效地解析和生成XML,开发者通常会利用各种API,如DOM(Document Object Model)、SAX(Simple API for XML)和STAX...
实现了特殊的XML验证,一般来说使用SAXParser来读入XML文件再进行验证,但是这里使 用了边写边验证的功能,如果是...是Stax2 API提供的功能 java转换json或xml,支持Java和Json格式的互转,同时也支持Java和XML的互转
在Java中,有多种方法可以解析XML,其中StAX(Streaming API for XML)和JAXB(Java Architecture for XML Binding)是两种常用的技术。本篇文章将详细探讨如何结合StAX和JAXB进行高效的XML解析。 StAX是一种事件...
"stax2-api-3.1.1.jar"是一个Java库,主要用于XML解析,特别是采用了StAX 2.0规范的实现。这个jar包包含了StAX 2 API的接口和实现,使得开发人员能够利用其特性来读取和写入XML数据,而无需处理复杂的DOM树或SAX事件...
### Java StAX解析XML详解 #### 一、简介与背景 在Java开发中,XML是一种常用的数据交换格式,尤其在处理配置文件或与其他系统进行数据交互时。Java提供了多种解析XML的技术,包括DOM(Document Object Model)、...
用来解析XML文件的jar包。Streaming API for XML (StAX) 的基于事件迭代器 API 无论在性能还是在可用性上都有其他 XML 处理方法所不及的独到之处。使用前请先解压
### 使用StAX组装与解析XML #### 一、引言 在处理XML文档时,Java提供了多种工具和技术,包括DOM、SAX以及本文将重点讨论的Streaming API for XML(简称StAX)。StAX是一种用于读取和写入XML数据的事件驱动型API,...
stax2-api-3.1.1-sources.jar文件,下载使用,用来解析XML文件的jar包。Streaming API for XML (StAX) 的基于事件迭代器 API 无论在性能还是在可用性上都有其他 XML 处理方法所不及的独到之处。
为了处理XML文档,Java提供了多种解析方法,包括SAX(Simple API for XML)、JDOM(Java Document Object Model)、DOM(Document Object Model)以及stAX(Streaming API for XML)。下面将详细介绍这四种解析XML的...
StAX是一种基于事件驱动的解析器,它允许程序员通过逐个处理XML事件(如开始元素、结束元素、文本等)来读取和写入XML文档,这种方式相比DOM(Document Object Model)更加轻量级和高效。 **StAX的优势** 1. **低...
Streaming API for XML (StAX) 是Java中处理XML的一种高效且灵活的标准,相较于DOM和SAX,它在性能和易用性上有显著优势。StAX是JSR-173的一部分,于2004年3月发布,最终被纳入JAXP 1.4,也将在Java 6中得到支持。 ...