什么是xml?
百度百科了解一下,这里就不多说。
xml解析发展历程
首先是dom方式,发展为SAX方式,最后是dom4j,性能和编码都经历了很大的优化,dom4j现在最为常用。
xml解析代码
<?xml version="1.0" encoding="UTF-8"?>
<!-- Users 是根节点 user是子节点 id是子节点属性 username、password是子节点的子元素 -->
<Users>
<user id='1'>
<username>Jodan</username>
<password>123456</password>
</user>
<user id='2'>
<username>Kobea</username>
<password>654321</password>
</user>
</Users>
这里的解析类需要一个dom4j的jar包,自行网上下载,否则无法使用dom4j方法进行编码。
package com.wyz.dom4j;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;
import com.wyz.bean.User;
public class Dom4jPrac {
static List<User> userList=new ArrayList<User>();
/**
* 将xml文件读取到集合中
* 1.初始化一个读取对象
* 2.创建一个存放xml数据的文件对象
* 3.获取根节点
* 4.获取所有子节点
* 5.遍历子节点,获取属性和子元素
* 6.将属性和子元素存入user对象
* 7.将user对象存入集合,遍历集合取值
* @throws DocumentException
*/
public static void xmlToEntity() throws DocumentException{
SAXReader reader=new SAXReader();
Document doc=reader.read("src/User.xml");
Element root=doc.getRootElement();
List<Element> eleList=root.elements();
User user=null;
Element element=null;
for(int i=0;i<eleList.size();i++){
user =new User();
element=eleList.get(i);
user.setId(new Integer(element.attribute("id").getValue()));
user.setUsername(element.element("username").getText());
user.setPassword(element.element("password").getText());
userList.add(user);
}
for(User userTemp:userList){
System.out.println(userTemp.getUsername()+"---"+userTemp.getPassword());
}
}
/**
* 将集合数据生成xml
* 1.创建文件对象doc
* 2.创建根节点
* 3.把根节点加入文件对象
* 4.遍历集合,在根节点root中添加子节点以及加入子节点的子元素
* 5.构造格式化的xml对象
* 6.输出,把内存中已经建立好的doc对象输出到指定文件
*/
public static void entityToXml(){
Document doc=DocumentHelper.createDocument();
Element root=DocumentHelper.createElement("Users");
doc.setRootElement(root);
for(int i=0;i<userList.size();i++){
User user=userList.get(i);
Element userElement=root.addElement("user");
userElement.addAttribute("id", user.getId()+"");
Element username=userElement.addElement("username");
username.setText(user.getUsername());
Element password=userElement.addElement("password");
password.setText(user.getPassword());
}
OutputFormat opt=new OutputFormat(" ", true, "UTF-8");
OutputStream out=null;
XMLWriter writer=null;
try {
out=new FileOutputStream("src/dom4jUser.xml");
writer=new XMLWriter(out, opt);
writer.write(doc);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void main(String[] args) throws DocumentException {
xmlToEntity();
entityToXml();
}
}
总结:理解xml很重要,编码简单。