JavaWeb:xml解析

什么是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很重要,编码简单。

猜你喜欢

转载自blog.csdn.net/un_stoppable/article/details/80977637
今日推荐