1、将带有范型的JavaColl存储的数据转化为XML格式(ParseXML)
所需依赖:
<dependency>
<groupId>xom</groupId>
<artifactId>xom</artifactId>
<version>1.3.5</version>
</dependency>
JAVA实现:
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.Arrays;
import java.util.List;
import org.testng.annotations.Test;
import nu.xom.Document;
import nu.xom.Element;
import nu.xom.Serializer;
public class ParseJavaCollToXML {
public static class Person {
private String nameStr, AddrStr,sexStr;
public Person(String first, String last,String sex) {
this.nameStr = first;
this.AddrStr = last;
this.sexStr = sex;
}
// Produce an XML Element from this Person object:
public Element getXML() {
Element person = new Element("person");
Element firstName = new Element("nameStr");
firstName.appendChild(nameStr);
Element lastName = new Element("AddrStr");
lastName.appendChild(AddrStr);
Element sexTag = new Element("sexTag");
sexTag.appendChild(sexStr);
person.appendChild(firstName);
person.appendChild(lastName);
person.appendChild(sexTag);
return person;
}
// Constructor to restore a Person from an XML Element:
public Person(Element person) {
nameStr = person.getFirstChildElement("nameStr").getValue();
AddrStr = person.getFirstChildElement("AddrStr").getValue();
sexStr = person.getFirstChildElement("sexTag").getValue();
}
public String toString() {
return nameStr + " &" + AddrStr+ " &" + sexStr;
}
}
public static void format(OutputStream os, Document doc) throws Exception {
Serializer serializer = new Serializer(os, "UTF-8");
serializer.setIndent(4);
serializer.setMaxLength(60);
serializer.write(doc);
serializer.flush();
}
@Test
public void executeParse() throws Exception {
List<Person> people = Arrays.asList(new Person("Dr.Bumsen", "Honeydew","boyTag"), new Person("Gonzo", "The Great","girlTag"),
new Person("Phillip J.", "Fly","boyTag"));
Element root = new Element("people");
for (Person p : people) {
root.appendChild(p.getXML());
}
Document doc = new Document(root);
this.format(System.out, doc);
this.format(new BufferedOutputStream(new FileOutputStream("D:\\File_Daily\\FileOutputStream_Home\\People.xml")), doc); //输出到文件
}
}
XML格式输出
<?xml version="1.0" encoding="UTF-8"?>
<people>
<person>
<nameStr>Dr.Bumsen</nameStr>
<AddrStr>Honeydew</AddrStr>
<sexTag>boyTag</sexTag>
</person>
<person>
<nameStr>Gonzo</nameStr>
<AddrStr>The Great</AddrStr>
<sexTag>girlTag</sexTag>
</person>
<person>
<nameStr>Phillip J.</nameStr>
<AddrStr>Fly</AddrStr>
<sexTag>boyTag</sexTag>
</person>
</people>
2、XML数据解析
import java.util.ArrayList;
import java.util.List;
import org.testng.annotations.Test;
import mix_daily.ParseJavaCollToXML.Person;
import nu.xom.Builder;
import nu.xom.Document;
import nu.xom.Elements;
public class ParseXmlToJavaBean {
List<Person> arrrList= new ArrayList<Person>();
public List<Person> getPeople(String fileName) throws Exception{
Document doc = new Builder().build(fileName);
Elements elements = doc.getRootElement().getChildElements();
for (int i = 0; i < elements.size(); ++i){
arrrList.add(new Person(elements.get(i)));
}
return arrrList;
}
@Test
public void getData() throws Exception {
arrrList= this.getPeople("file:/D:/File_Daily/FileOutputStream_Home/People.xml");
for (Person person : arrrList) {
System.out.println(person);
}
}
}
此处输出以JavaObject形式(Person)
Dr.Bumsen &Honeydew &boyTag
Gonzo &The Great &girlTag
Phillip J. &Fly &boyTag