在这篇文章中,我们将讨论如何使用JDOM parser
在Java中读取XML文件。JDOM
是一个开源的、基于Java的库,用于解析XML文档。它是典型的Java开发者友好型API。它是Java优化的,它使用Java集合如List
和Arrays
。
JDOM
与DOM和SAX API一起工作,结合了两者的优点。它的内存占用率很低,而且几乎和SAX一样快。
JDOM不是标准JDK的一部分,所以要使用JDOM,你需要从JDOM Official Website下载其二进制文件。一旦二进制文件被下载,在你的项目classpath中包含JDOM jar,你就可以开始使用它了。本例中,我们将使用当前的JDOM 2.0.6版本(jdom-2.0.6.jar)。如果你使用的是基于maven的项目,那么请在你的pom.xml中添加以下maven依赖项。
<!-- https://mvnrepository.com/artifact/org.jdom/jdom2 -->
<dependency>
<groupId>org.jdom</groupId>
<artifactId>jdom2</artifactId>
<version>2.0.6</version>
</dependency>
org.jdom2.input.DOMBuilder
: 使用DOM解析器来解析XML,并将其转换为JDOM文档。org.jdom2.input.SAXBuilder
: 使用SAX解析器来解析XML并将其转化为JDOM文档。org.jdom2.input.StAXEventBuilder
: 使用STAX事件解析器来解析XML并将其转换为JDOM文档。org.jdom2.input.StAXStreamBuilder
。使用STAX Stream Parser来解析XML并将其转换为JDOM Document。org.jdom2.Document
。JDOM Document提供了有用的方法来获取根元素,读取、编辑和写入元素的内容。在这里,我们将使用它来从XML中获取根元素。org.jdom2.Element
: 提供了有用的方法来获取子元素的列表,获取子元素的值,获取属性值。jdom_users.xml
文件(我们将读取的XML文件)确保你在文件系统中有一个jdom_users.xml
文件,并在该文件中添加以下内容。
<?xmlversion="1.0"encoding="UTF-8"?>
<Users>
<User id= "1">
<firstName>Ramesh</firstName>
<lastName>Fadatare</lastName>
<age>28</age>
<gender>Male</gender>
</User>
<User id= "2">
<firstName>John</firstName>
<lastName>Cena</lastName>
<age>45</age>
<gender>Male</gender>
</User>
<User id= "3">
<firstName>Tom</firstName>
<lastName>Cruise</lastName>
<age>40</age>
<gender>Male</gender>
</User>
</Users>
User对象来代表XML中的User元素。
package net.javaguides.javaxmlparser.jdom;
public class User {
private int id;
private String firstName;
private String lastName;
private int age;
private String gender;
public int getId() {
return id;
}
public void setId(int i) {
this.id = i;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "User [id=" + id + ", firstName=" + firstName + ", lastName=" + lastName + ", age=" + age + ", gender=" +
gender + "]";
}
}
下面是使用DOMBuilder读取XML文件到User
对象列表的测试程序。
package net.javaguides.javaxmlparser.jdom;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.jdom2.Document;
import org.jdom2.Element;
import org.jdom2.input.SAXBuilder;
public class ReadXMLFile {
public static void main(String[] args) {
final String fileName = "jdom_users.xml";
try {
// we can create JDOM Document from DOM, SAX and STAX Parser Builder classes
SAXBuilder builder = new SAXBuilder();
File xmlFile = new File(fileName);
Document jdomDoc = (Document) builder.build(xmlFile);
Element root = jdomDoc.getRootElement();
List < Element > listOfUsers = root.getChildren("User");
List < User > userList = new ArrayList < > ();
for (Element userElement: listOfUsers) {
User user = new User();
user.setId(Integer.parseInt(userElement.getAttributeValue("id")));
user.setAge(Integer.parseInt(userElement.getChildText("age")));
user.setFirstName(userElement.getChildText("firstName"));
user.setLastName(userElement.getChildText("lastName"));
user.setGender(userElement.getChildText("gender"));
userList.add(user);
}
// lets print Users list information
userList.forEach(user - > {
System.out.println(user.toString());
});
} catch (Exception e) {
e.printStackTrace();
}
}
}
上述程序的输出结果是:
User [id=1, firstName=Ramesh, lastName=Fadatare, age=28, gender=Male]
User [id=2, firstName=John, lastName=Cena, age=45, gender=Male]
User [id=3, firstName=Tom, lastName=Cruise, age=40, gender=Male]
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://www.javaguides.net/2018/10/how-to-read-xml-file-in-java-jdom-parser.html
内容来源于网络,如有侵权,请联系作者删除!