Java动态生成和解析xml文件步骤详解

java

首先声明,这个地方是利用dom4j进行解析和生成,需要用到dom4j的jar包,所以首先需要我们获取jar包:

<dependency>

<groupId>dom4j</groupId>

<artifactId>dom4j</artifactId>

<version>1.6.1</version>

</dependency>

生成xml文件代码案列:

package day12;

import java.io.FileOutputStream;

import java.util.ArrayList;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.DocumentHelper;

import org.dom4j.Element;

import org.dom4j.io.OutputFormat;

import org.dom4j.io.XMLWriter;

/**

* 写出XML文档

*/

public class WriteXmlDemo {

public static void main(String[] args) {

List<Emp> empList = new ArrayList<Emp>();

empList.add(new Emp(1,"张三",22,"男",3000));

empList.add(new Emp(2,"李四",23,"女",4000));

empList.add(new Emp(3,"王五",24,"男",5000));

empList.add(new Emp(4,"赵六",25,"女",6000));

empList.add(new Emp(5,"钱七",26,"男",7000));

empList.add(new Emp(6,"传奇",21,"男",8000));

/*

* 写出XML文档的大致步骤

* 1.创建空白文档对象Document

* 2.向该文档中添加根元素

* 3.按照规定的XML文档结构从根元素开始,逐级添加子元素,已完成该结构

* 4.创建XMLWriter

* 5.将Document对象写出成XML文档

* 6.将XMLWriter关闭

*/

//1

Document doc = DocumentHelper.createDocument();

/*

* 2.Element addElement(String name)

* Document提供的该方法是用来向当前文档中添加给定名字的根元素。并将其以一个Element

* 实例返回以便于继续对该根元素操作。

* 需要注意,该方法只能调用一次,因为一个文档中只能有一个根元素。

*/

Element root = doc.addElement("list");

//将所有员工信息以若干<emp>标签形式添加到<list>中

for(Emp emp:empList){

/*

* Element提供了向其中添加子标签的方法:

* Element addElement(String name)

*/

Element empEle = root.addElement("emp");

//添加<name>标签

Element nameEle = empEle.addElement("name");

nameEle.addText(emp.getName());

//添加<age>标签

Element ageEle = empEle.addElement("age");

ageEle.addText(String.valueOf(emp.getAge()));

//添加<gender>标签

Element genderEle = empEle.addElement("gender");

genderEle.addText(emp.getGender());

//添加<salary>标签

Element salaryEle = empEle.addElement("salary");

salaryEle.addText(emp.getSalary()+"");

empEle.addAttribute("id",emp.getId()+"");

}

try {

FileOutputStream fos = new FileOutputStream("myemp.xml");

XMLWriter writer = new XMLWriter(fos,OutputFormat.createCompactFormat());

writer.write(doc);

System.out.println("写出完毕!");

writer.close();

} catch (Exception e) {

e.printStackTrace();

}

}

}

View Code

解析xml文件代码案列

package day12;

import java.io.FileInputStream;

import java.util.ArrayList;

import java.util.List;

import org.dom4j.Document;

import org.dom4j.Element;

import org.dom4j.io.SAXReader;

/**

* 使用DOM4J解析XML文档

* @author tarena

*

*/

public class ParseXMLDemo {

public static void main(String[] args) {

/*

* 读取emplist文件,将该xml文档中的所有员工信息解析出来,

* 并以若干Emp实例保存,然后将这些员工信息存入到一个List集合中。

*/

/*

* 使用DOM解析XML的四大致流程:

* 1.创建SAXReader

* 2.使用SAXReader读取要解析的XML文档,该步骤就是DOM耗时耗资源的地方,

* 因为会将文档所有内容解析完毕并存入到内存中。

* 读取方法会返回一个Document对象,该对象就表示解析出来的该XML文档内容

* 3.通过Document对象获取根元素(根标签)。

* 4.根据文档的结构,从根元素开始逐级获取子元素以达到遍历XML文档数据的目的。

*/

try {

//1

SAXReader reader = new SAXReader();

//2

Document doc = reader.read(new FileInputStream("emplist.xml"));

/*

*3.获取根元素

*Element的每一个实例用于表示XML文档中的一个元素(一对标签)

*它提供了很多用于操作当前标签的方法,其中常用的用于获取标签信息的方法有:

*

* String getName() 获取标签名

*

* Element elements(Sting name) 根据给定名字获取当前标签中的子标签

*

* List elements()

* 获取当前标签中的所有子标签,返回的集合中是若干Element实例,每个为一个子元素

*

* List elements(String name) 获取当前标签中的所有同名名字元素

*

* String getText() 获取当前标签中间的文本

*

* Attribute attribute(String name) 获取当前标签中指定名字的属性

*

*/

Element root = doc.getRootElement();

List<Emp> empList = new ArrayList<Emp>();

/*

* 获取<list>标签中的所有<emp>标签

*/

List<Element> list = root.elements();

/*

* 将每一个<emp>标签中的内容取到,并以一个Emp实例保存,然后将该对象存入集合

*/

for(Element empEle : list){

// System.out.println(empEle.getName());

//获取name

Element nameEle = empEle.element("name");

String name = nameEle.getText();

System.out.println(name);

//获取age

int age = Integer.parseInt(empEle.elementText("age"));

System.out.println(age);

//获取性别

String gender = empEle.elementText("gender");

System.out.println(gender);

//获取工资

int salary = Integer.parseInt(empEle.elementText("salary"));

System.out.println(salary);

//获取ID

int id = Integer.parseInt(empEle.attributeValue("id"));

Emp emp = new Emp(id , name , age ,gender, salary);

empList.add(emp);

}

System.out.println("解析完成!");

for(Emp e:empList){

System.out.println(e);

}

} catch (Exception e) {

e.printStackTrace();

}

}

}

View Code

实体类

package day12;

/**

* 员工信息

*/

public class Emp {

private int id;

private String name;

private int age;

private String gender;

private int salary;

public Emp(){

}

public Emp(int id, String name, int age, String gender, int salary) {

super();

this.id = id;

this.name = name;

this.age = age;

this.gender = gender;

this.salary = salary;

}

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 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;

}

public int getSalary() {

return salary;

}

public void setSalary(int salary) {

this.salary = salary;

}

@Override

public String toString() {

return id + "," + name + "," + age + "," + "," + salary;

}

}

View Code

 如果有帮助到大家,希望大家给个赞,谢谢!

 

以上是 Java动态生成和解析xml文件步骤详解 的全部内容, 来源链接: utcz.com/z/391406.html

回到顶部