/*************************************************人物信息****************************************************/
public class Person
{
private String name;
private int age;
private String sex;
private String[] hobby;
private String introduction;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String[] getHobby() {
return hobby;
}
public void setHobby(String[] hobby) {
this.hobby = hobby;
}
public String getIntroduction() {
return introduction;
}
public void setIntroduction(String introduction)
{
this.introduction = introduction;
}
@Override
public String toString()
{
String H="";
for(String str:hobby)
{
H+=str+",";
}
return "name="+name+",age="+age+",sex="+sex+",hobby="+H+"introduction="+introduction+"\n";
}
}
/*******************************针对上述信息进行写入与读取XML操作***********************************************/
package homework;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.w3c.dom.Attr;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;
public class PullXml
{
private static List<Person> Test_person=null;
private static org.w3c.dom.Document document;
/*读取文件
*
*
*/
public static void read() throws Exception
{
SAXReader reader = new SAXReader();
Document document = reader.read(new File("src/test.xml"));
Element root = document.getRootElement();
List list = root.elements("person");//将解析出来的allresource下的resourceitem放在list中
Test_person = new ArrayList<Person>();//创建soerurce存放每一个resourceitem中资源
for(Iterator i = list.iterator();i.hasNext();)
{
Element resourceitem = (Element) i.next();
String name = resourceitem.element("name").getText();
int age = Integer.parseInt(resourceitem.element("age").getText());
String sex = resourceitem.element("sex").getText();
String hobby = resourceitem.element("hobby").getText(); //把取出来的爱好项做一个字符串分割
String[] HOBBYS=hobby.split(",");
String introduction = resourceitem.element("introduction").getText();
Person p = new Person();
p.setName(name);
p.setAge(age);
p.setSex(sex);
p.setHobby(HOBBYS);
p.setIntroduction(introduction);
Test_person.add(p);
}
}
/*准备工作
*
*
*/
public static void init()
{
try
{
DocumentBuilderFactory factory = DocumentBuilderFactory
.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
document = builder.newDocument();
}
catch (ParserConfigurationException e)
{
System.out.println(e.getMessage());
}
}
/*创建XML文件方法
* String fileName 文件名称
*
*
*/
public static void createXml(String fileName)
{
init();
List<Person> person_list=new ArrayList<Person>();
Person person_content=new Person();
person_content.setName("刘胡来");
person_content.setAge(25);
person_content.setSex("M");
person_content.setIntroduction("hello everbody thanks for you help!");
String[] H={"篮球","象棋","武侠小说"};
person_content.setHobby(H);
person_list.add(person_content);
org.w3c.dom.Element root = document.createElement("person"); //创建根节点
document.appendChild(root);
org.w3c.dom.Element item1 = document.createElement("person");
item1.setAttribute("id", "21"); //增加属性的另一种方法
root.appendChild(item1);
for(int i=0;i<person_list.size();i++)
{
/* 创建一个完成的节点,start */
org.w3c.dom.Element name = document.createElement("name");
name.appendChild(document.createTextNode(person_list.get(i).getName()));
item1.appendChild(name);
org.w3c.dom.Element age = document.createElement("age");
age.appendChild(document.createTextNode(String.valueOf(person_list.get(i).getAge())));
item1.appendChild(age);
org.w3c.dom.Element sex= document.createElement("sex");
sex.appendChild(document.createTextNode(person_list.get(i).getSex()));
item1.appendChild(sex);
String[] hobbyary=person_list.get(i).getHobby();
String hobbystr="";
for(int j=0;j<hobbyary.length;j++)
{
hobbystr+=hobbyary[j]+",";
//System.out.println("read file:"+hobbyary[j]);
}
org.w3c.dom.Element hobby= document.createElement("hobby");
hobby.appendChild(document.createTextNode(hobbystr));
item1.appendChild(hobby);
org.w3c.dom.Element intr= document.createElement("introduction");
intr.appendChild(document.createTextNode(person_list.get(i).getIntroduction()));
item1.appendChild(intr);
}
//将DOM对象document写入到xml文件中
TransformerFactory tf = TransformerFactory.newInstance();
try
{
Transformer transformer = tf.newTransformer();
DOMSource source = new DOMSource(document);
transformer.setOutputProperty(OutputKeys.ENCODING, "GB2312");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
PrintWriter pw = new PrintWriter(new FileOutputStream(fileName));
StreamResult result = new StreamResult(pw);
transformer.transform(source, result); //关键转换
System.out.println("生成XML文件成功!");
}
catch (TransformerConfigurationException e)
{
System.out.println(e.getMessage());
}
catch (IllegalArgumentException e) {
System.out.println(e.getMessage());
}
catch (FileNotFoundException e)
{
System.out.println(e.getMessage());
}
catch (TransformerException e) {
System.out.println(e.getMessage());
}
}
public static void main(String[] args)
{
try
{
read();
}
catch (Exception e)
{
e.printStackTrace();
}
String result="";
for(int i=0;i<Test_person.size();i++)
{
result+=Test_person.get(i).toString();
}
System.out.println("得到解析内容是:"+result);
//调用 创建XML文件方法
//createXml("src/test.xml");
}
}