100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > java xml stax_Java StAX解析器示例以读取XML文件

java xml stax_Java StAX解析器示例以读取XML文件

时间:2021-03-30 13:59:26

相关推荐

java xml stax_Java StAX解析器示例以读取XML文件

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 APIanditerator 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 usingJava StAX. It provides factory methods to createXMLEventReaderobject using which we can read the xml elements asXMLEvent. Some useful methods in XMLEvent implementation areisStartElement()andisEndElement()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 write xml file in java using java StAX Iterator API.

在上一教程中,我们学习了如何使用Java StAX Iterator API在Java中编写xml文件 。

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

<?xml version="1.0" encoding="UTF-8"?><Employees><Employee id="1"><age>29</age><name>Pankaj</name><gender>Male</gender><role>Java Developer</role></Employee><Employee id="2"><age>35</age><name>Lisa</name><gender>Female</gender><role>Manager</role></Employee></Employees>

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;}@Overridepublic 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<Employee> empList = parseXML(fileName);for(Employee emp : empList){System.out.println(emp.toString());}}private static List<Employee> parseXML(String fileName) {List<Employee> 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 elementAttribute idAttr = startElement.getAttributeByName(new QName("id"));if(idAttr != null){emp.setId(Integer.parseInt(idAttr.getValue()));}}//set the other varibles from xml elementselse 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 listif(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文件的全部内容。

翻译自: /1191/java-stax-parser-example-read-xml-file

java xml stax

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。