Java中利用simpleFramework解析xml
2012-03-11 16:51
609 查看
声明:本文为原创,欢迎转载,转载请注明出处。
simple的主页在http://simple.sourceforge.net/home.php
利用它可以方便的解析xml. 主要思路是先根据要解析的XML构建一个类,然后通过这个类去取xml里面具体的值域。
以下是一个简单的例子,学生记录里有年级,学号,姓名,性别等信息,现在通过simple xml把信息解出来。
首先在工程属性中把simple的jar加到Java Build Path的Libraries里面。这里用的是simple-xml-2.3.4.jar
构建的类具体如下,SunStudent是总类,里面有每个年级列表的集合;SunList是每个年级学生的列表,包含了一个学生集合;SunEntry是每个学生的信息类。
测试代码如下:
打印结果如下:
the xml file is: <?xml version="1.0" encoding="UTF-8"?><StudentRecords><list name="grade1"><entry id="1"><name>John</name><gender>Boy</gender></entry><entry id="2"><name>Joe</name><gender>Girl</gender></entry></list><list name="grade2"><entry id="1"><name>Bill</name><gender>Boy</gender></entry></list></StudentRecords>
student Grade: grade1
student ID: 1
student Name: John
student Gender: Boy
student ID: 2
student Name: Joe
student Gender: Girl
student Grade: grade2
student ID: 1
student Name: Bill
student Gender: Boy
simple的主页在http://simple.sourceforge.net/home.php
利用它可以方便的解析xml. 主要思路是先根据要解析的XML构建一个类,然后通过这个类去取xml里面具体的值域。
以下是一个简单的例子,学生记录里有年级,学号,姓名,性别等信息,现在通过simple xml把信息解出来。
<?xml version="1.0" encoding="UTF-8"?> <StudentRecords> <list name="grade1"> <entry id="1"> <name>John</name> <gender>Boy</gender> </entry> <entry id="2"> <name>Joe</name> <gender>Girl</gender> </entry> </list> <list name="grade2"> <entry id="1"> <name>Bill</name> <gender>Boy</gender> </entry> </list> </StudentRecords>
首先在工程属性中把simple的jar加到Java Build Path的Libraries里面。这里用的是simple-xml-2.3.4.jar
构建的类具体如下,SunStudent是总类,里面有每个年级列表的集合;SunList是每个年级学生的列表,包含了一个学生集合;SunEntry是每个学生的信息类。
import java.util.ArrayList; import java.util.List; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; @Root(name = "StudentRecords", strict=false) @Namespace(reference = "urn:sun:params:xml:ns:students") public class SunStudent { @ElementList(inline=true, required=false) protected List<SunList> list; public List<SunList> getList() { if (list == null) { list = new ArrayList<SunList>(); } return this.list; } }
import java.util.ArrayList; import org.simpleframework.xml.Attribute; import org.simpleframework.xml.ElementList; import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; @Root(name = "list", strict=false) @Namespace(reference = "urn:sun:params:xml:ns:students") public class SunList { @ElementList(inline=true, required=false) protected java.util.List<SunEntry> entries; @Attribute(required=true) protected String name; public String getName() { return name; } public void setName(String value) { this.name = value; } public java.util.List<SunEntry> getEntries(){ if(this.entries == null){ this.entries = new ArrayList<SunEntry>(); } return this.entries; } }
import org.simpleframework.xml.Attribute; import org.simpleframework.xml.Element; import org.simpleframework.xml.Namespace; import org.simpleframework.xml.Root; @Root(name="entry", strict=false) @Namespace(reference = "urn:sun:params:xml:ns:students") public class SunEntry { @Element(name = "name", required = true) protected String studentName; @Element(name = "gender", required = true) protected String studentGender; @Attribute(required = true) protected String id; public String getStudentID() { return id; } public void setstudentID(String value) { this.id = value; } public String getStudentName() { return studentName; } public void setstudentName(String value) { this.studentName = value; } public String getStudentGender() { return studentGender; } public void setstudentGender(String value) { this.studentGender = value; } }
测试代码如下:
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.List; import org.simpleframework.xml.Serializer; import org.simpleframework.xml.core.Persister; public class SunTest { public static void main(String[] args) throws IOException { String result = ""; BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("D:\\sun.xml"))); String tmpStr = ""; final Serializer serializer; serializer = new Persister(); while ((tmpStr = br.readLine())!=null){ result = result + tmpStr.trim(); } System.out.print("the xml file is: " + result + "\n"); try { SunStudent studentRecords = serializer.read(SunStudent.class, new String(result)); List<SunList> gradeList = studentRecords.getList(); for (int gradeNo = 0; gradeNo < gradeList.size(); gradeNo++){ SunList eachList = (SunList)(gradeList.get(gradeNo)); List<SunEntry> entries = eachList.getEntries(); System.out.print("\n" + "student Grade: " + eachList.getName() + "\n"); for (int studentID = 0; studentID < entries.size(); studentID ++){ SunEntry eachEntry = (SunEntry)(entries.get(studentID)); System.out.print("student ID: " + eachEntry.getStudentID() + "\n"); System.out.print("student Name: " + eachEntry.getStudentName() + "\n"); System.out.print("student Gender: " + eachEntry.getStudentGender() + "\n"); } } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
打印结果如下:
the xml file is: <?xml version="1.0" encoding="UTF-8"?><StudentRecords><list name="grade1"><entry id="1"><name>John</name><gender>Boy</gender></entry><entry id="2"><name>Joe</name><gender>Girl</gender></entry></list><list name="grade2"><entry id="1"><name>Bill</name><gender>Boy</gender></entry></list></StudentRecords>
student Grade: grade1
student ID: 1
student Name: John
student Gender: Boy
student ID: 2
student Name: Joe
student Gender: Girl
student Grade: grade2
student ID: 1
student Name: Bill
student Gender: Boy
相关文章推荐
- Java中利用simpleFramework解析xml
- Php利用java解析xml[原创]
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- Php利用java解析xml
- java网络编程--解析通过web.xml文件控制利用过滤器实现编码格式步骤
- java中利用Dom4j解析和生成XML文档
- java中利用dom4j对XML文档的创建、解析、查找、修改、保存等操作。
- java 利用Xstream注解生成和解析xml
- 利用jdk对xsd文件操作生成java实体并解析生成的xml
- java 利用Xstream注解生成和解析xml
- 利用simpleframework解析xml
- java 利用dom4j 解析XML文件
- 黑马程序员_王康 java利用DOM4J解析XML文件
- Java 利用Xstream 解析 XML
- Java利用Xstream注解生成和解析xml
- 利用java的Dom解析XML文件
- Java学习之路——利用JDOM对xml文档进行解析等操作实例
- Php利用java解析xml
- 利用oxygen编辑并生成xml文件,并使用JAVA的JAXB技术完成xml的解析
- java利用dom4j对任意xml的解析