博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java xml stax_Java StAX解析器示例以读取XML文件
阅读量:2530 次
发布时间:2019-05-11

本文共 7275 字,大约阅读时间需要 24 分钟。

java xml stax

We can use Java StAX parser to read XML file. Java Streaming API for XML (Java StAX) provides implementation for processing XML in java. StAX consists of two sets of API – cursor based API and iterator based API.

我们可以使用Java StAX解析器读取XML文件。 用于XML的Java流API (Java StAX)提供了用于在Java中处理XML的实现。 StAX由两组API组成- 基于游标的API基于迭代器的API

Java StAX (Java StAX)

Java StAX cursor based API allows the application to process XML as a stream of tokens aka events; the application can check the parser’s state and get information about the last parsed event, then advance to the next event, and so on. This is a low-level API; while considerably efficient, it does not provide an abstraction of the underlying XML structure.

基于Java StAX光标的API允许应用程序将XML作为令牌(又称为事件)流进行处理。 应用程序可以检查解析器的状态并获取有关上一个已解析事件的信息,然后前进到下一个事件,依此类推。 这是一个底层API。 尽管效率很高,但它没有提供底层XML结构的抽象。

The higher-level iterator-based API allows the application to process XML as a series of event objects, each of which communicates a piece of the XML structure to the application. All the application needs to do is determine the type of the parsed event, cast it to the corresponding type, and use its methods to get information related to the event.

基于高级迭代器的API允许应用程序将XML作为一系列事件对象进行处理,每个事件对象都将XML结构的一部分传达给应用程序。 应用程序所需要做的就是确定已解析事件的类型,将其转换为相应的类型,并使用其方法来获取与该事件相关的信息。

In this tutorial we will learn how to read XML iteratively using Java StAX. It provides factory methods to create XMLEventReader object using which we can read the xml elements as XMLEvent. Some useful methods in XMLEvent implementation are isStartElement() and isEndElement() to determine whether it’s start tag or end tag.

在本教程中,我们将学习如何使用Java StAX迭代读取XML。 它提供了工厂方法来创建XMLEventReader对象,通过该方法我们可以将xml元素读取为XMLEvent 。 XMLEvent实现中一些有用的方法是isStartElement()isEndElement()以确定它是开始标记还是结束标记。

In last tutorial, we learned how to .

在上一教程中,我们学习了如何 。

For this tutorial we have following XML file that contains list of Employee, we will use Java StAX Iterator API to read XML file and create list of Employee object.

在本教程中,我们有以下包含Employee列表的XML文件,我们将使用Java StAX Iterator API读取XML文件并创建Employee对象的列表。

employee.xml

employee.xml

29
Pankaj
Male
Java Developer
35
Lisa
Female
Manager

To read this XML into Employees list, we will create Employee bean first.

要将XML读取到Employees列表中,我们将首先创建Employee bean。

Employee.java

Employee.java

package com.journaldev.xml;public class Employee {    private int id;    private String name;    private String gender;    private int age;    private String role;        public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getGender() {        return gender;    }    public void setGender(String gender) {        this.gender = gender;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    public String getRole() {        return role;    }    public void setRole(String role) {        this.role = role;    }        @Override    public String toString() {        return "Employee:: ID="+this.id+" Name=" + this.name + " Age=" + this.age + " Gender=" + this.gender +                " Role=" + this.role;    }    }

Java StAX解析器示例以读取XML文件 (Java StAX Parser Example to read XML file)

Here is the program that reads the xml file and create employees list.

这是读取xml文件并创建员工列表的程序。

StaxXMLReader.java

StaxXMLReader.java

package com.journaldev.xml;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.util.ArrayList;import java.util.List;import javax.xml.namespace.QName;import javax.xml.stream.XMLEventReader;import javax.xml.stream.XMLInputFactory;import javax.xml.stream.XMLStreamException;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 StaxXMLReader {    public static void main(String[] args) {        String fileName = "/Users/pankaj/employee.xml";        List
empList = parseXML(fileName); for(Employee emp : empList){ System.out.println(emp.toString()); } } private static List
parseXML(String fileName) { List
empList = new ArrayList<>(); Employee emp = null; XMLInputFactory xmlInputFactory = XMLInputFactory.newInstance(); try { XMLEventReader xmlEventReader = xmlInputFactory.createXMLEventReader(new FileInputStream(fileName)); while(xmlEventReader.hasNext()){ XMLEvent xmlEvent = xmlEventReader.nextEvent(); if (xmlEvent.isStartElement()){ StartElement startElement = xmlEvent.asStartElement(); if(startElement.getName().getLocalPart().equals("Employee")){ emp = new Employee(); //Get the 'id' attribute from Employee element Attribute idAttr = startElement.getAttributeByName(new QName("id")); if(idAttr != null){ emp.setId(Integer.parseInt(idAttr.getValue())); } } //set the other varibles from xml elements else if(startElement.getName().getLocalPart().equals("age")){ xmlEvent = xmlEventReader.nextEvent(); emp.setAge(Integer.parseInt(xmlEvent.asCharacters().getData())); }else if(startElement.getName().getLocalPart().equals("name")){ xmlEvent = xmlEventReader.nextEvent(); emp.setName(xmlEvent.asCharacters().getData()); }else if(startElement.getName().getLocalPart().equals("gender")){ xmlEvent = xmlEventReader.nextEvent(); emp.setGender(xmlEvent.asCharacters().getData()); }else if(startElement.getName().getLocalPart().equals("role")){ xmlEvent = xmlEventReader.nextEvent(); emp.setRole(xmlEvent.asCharacters().getData()); } } //if Employee end element is reached, add employee object to list if(xmlEvent.isEndElement()){ EndElement endElement = xmlEvent.asEndElement(); if(endElement.getName().getLocalPart().equals("Employee")){ empList.add(emp); } } } } catch (FileNotFoundException | XMLStreamException e) { e.printStackTrace(); } return empList; }}

When we execute above program, we get following output in console.

当我们执行上面的程序时,我们在控制台中得到以下输出。

Employee:: ID=1 Name=Pankaj Age=29 Gender=Male Role=Java DeveloperEmployee:: ID=2 Name=Lisa Age=35 Gender=Female Role=Manager

That’s all for a quick Java StAX parser example to read XML file.

这就是一个快速的Java StAX解析器示例以读取XML文件的全部内容。

翻译自:

java xml stax

转载地址:http://mwlzd.baihongyu.com/

你可能感兴趣的文章
Equivalent Strings
查看>>
flume handler
查看>>
收藏其他博客园主写的代码,学习加自用。先表示感谢!!!
查看>>
H5 表单标签
查看>>
su 与 su - 区别
查看>>
C语言编程-9_4 字符统计
查看>>
在webconfig中写好连接后,在程序中如何调用?
查看>>
限制用户不能删除SharePoint列表中的条目(项目)
查看>>
【Linux网络编程】使用GDB调试程序
查看>>
feign调用spring clound eureka 注册中心服务
查看>>
ZT:Linux上安装JDK,最准确
查看>>
LimeJS指南3
查看>>
关于C++ const成员的一些细节
查看>>
《代码大全》学习摘要(五)软件构建中的设计(下)
查看>>
C#检测驱动是否安装的问题
查看>>
web-4. 装饰页面的图像
查看>>
微信测试账户
查看>>
Android ListView上拉获取下一页
查看>>
算法练习题
查看>>
学习使用Django一 安装虚拟环境
查看>>