JDOM解析

来源:互联网 发布:怎么学java编程基础 编辑:程序博客网 时间:2024/06/17 02:43
<?xml version="1.0" encoding="UTF-8"?><students>   <student name="长泽雅美" height="170cm" weight="50kg">     <grade id="001">二年级</grade>      <number score="80">1</number>   </student>    <student name="李四" height="170cm" weight="50kg">     <grade id="002">二年级</grade>      <number score="88">2</number>   </student>    <student name="堀北真希" height="170cm" weight="50kg">     <grade id="005"/>      <number score="99"/>   </student>  </students>
package com.betasoft.util;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.ArrayList;import java.util.List;import org.jdom2.Attribute;import org.jdom2.Document;import org.jdom2.Element;import org.jdom2.JDOMException;import org.jdom2.input.SAXBuilder;import com.betasoft.entity.Student;public class JDOMParse {private static List<Student> list = new ArrayList<>();public static void main(String[] args) {//进行对student.xml文件的JDOM解析//准备工作//1.创建一个SAXBuilder的对象SAXBuilder saxBuilder = new SAXBuilder();//创建一个输入流,将XML文件加载到输入流中InputStream in;try {in = new FileInputStream("src/file/student.xml");//通过SAXBuilder的build方法,将输入流加载到saxBuilder中InputStreamReader isr = new InputStreamReader(in,"UTF-8");Document document = saxBuilder.build(isr);//通过Document对象获取获取XML文件的根节点Element rootElement = document.getRootElement();//获取根节点下的子节点的List集合List<Element> studentList = rootElement.getChildren();//继续进行解析for(Element student : studentList){Student stu = new Student();System.out.println("开始解析第" + (studentList.indexOf(student)+1) + "书");//解析student属性List<Attribute> attrList = student.getAttributes();//知道节点名称时,获取节点值//student.getAttributeValue("");//遍历attrList(针对不清楚student节点下属性的名字及数量)for(Attribute attr : attrList){//获取属性名String name = attr.getName();//获取属性值String value = attr.getValue();System.out.println("属性名:"+name+"属性值"+value);if(name.equals("name")){stu.setName(value);}else if(name.equals("height")){stu.setHeight(value);}else if(name.equals("weight")){stu.setWeight(value);}}//对student节点的子节点的节点名以及节点值的遍历List<Element> bookChilds = student.getChildren();for(Element child : bookChilds){System.out.println("节点名" + child.getName() + "------节点值" + child.getValue());if(child.getName().equals("grade")){stu.setGrade(child.getValue());}else if(child.getName().equals("number")){stu.setNumber(child.getValue());}}System.out.println("结束解析第" + (studentList.indexOf(student)+1) + "书");list.add(stu);stu = null;System.out.println(list.size());System.out.println(list.get(0).getName());}} catch (FileNotFoundException e) {e.printStackTrace();} catch (JDOMException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}


原创粉丝点击