jsp_XML_JSON

来源:互联网 发布:支持国密算法的浏览器 编辑:程序博客网 时间:2024/06/07 15:09
1: XML    1): 简介        指可扩展标记语言(eXtensible Markup Language)    2): 作用        被设计用来传输和存储数据    3): 示例        <?xml version="1.0" encoding="UTF-8"?>        <users>            <user id="1">                <id></id>                <email></email>                <password></password>            </user>        </users>    4): 命名规则            名称可以包含字母,数字以及其他的字符            名称不能以数字或者标点符号开始            名称不能以字母xml(或者XML, Xml等等)开始            名称不能包含空格            可以使用任何名称,没有保留的字词    5): 可以通过dom4j来操作xml        使用前提需要导入dom4j的jar包
package com.tz.servlet.xml;import java.io.File;import java.io.FileWriter;import java.io.IOException;import java.io.InputStream;import java.util.Iterator;import java.util.List;import javax.print.Doc;import org.dom4j.Attribute;import org.dom4j.Document;import org.dom4j.DocumentException;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.Node;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;import org.junit.Test;import com.tz.servlet.bean.User;public class Dom4jTest {    /**     * 解析xml文件     * @throws DocumentException      */    @Test    public void test1() throws DocumentException {        //需要先创建一个SAXReader对象        SAXReader reader = new SAXReader();        InputStream stream = Dom4jTest.class.getClassLoader().getResourceAsStream("user.xml");        Document document =  reader.read(stream);        //获取到根节下所有的子元素        Element rootElement = document.getRootElement();        for(Iterator i = rootElement.elementIterator(); i.hasNext(); ) {            Element element = (Element) i.next();            System.out.println(element);        }        System.out.println("-----------------------------------");        //遍历根节点下的所有的user子元素        for(Iterator i = rootElement.elementIterator("user"); i.hasNext(); ) {            Element element = (Element) i.next();            //遍历user下的子元素            for(Iterator j = element.elementIterator(); j.hasNext(); ) {                Element e = (Element) j.next();                //获取遍历遍历元素的名和值                //System.out.println(e.getName() +"="+ e.getTextTrim());            }            //遍历元素上所有属性            for(Iterator<Element> n = element.attributeIterator(); n.hasNext(); ) {                Attribute attr = (Attribute) n.next();                System.out.println(attr.getName() +"="+ attr.getValue());            }        }    }    /**     * 解析xml数据,生成实体对象     * @throws DocumentException      */    @Test    public void test2() throws DocumentException {        //需要先创建一个SAXReader对象        SAXReader reader = new SAXReader();        InputStream stream = Dom4jTest.class.getClassLoader().getResourceAsStream("user.xml");        Document document =  reader.read(stream);        Element root = document.getRootElement();        for(Iterator i = root.elementIterator("user"); i.hasNext(); ) {            Element userElement = (Element) i.next();            String id = userElement.element("id").getTextTrim();            String email = userElement.element("email").getTextTrim();            String password = userElement.element("password").getTextTrim();            User user = new User(Integer.parseInt(id), email, password);            System.out.println(user);        }    }    /**     * 通过节点树来查找     * @throws DocumentException      */    @Test    public void test3() throws DocumentException {        //需要先创建一个SAXReader对象        SAXReader reader = new SAXReader();        InputStream stream = Dom4jTest.class.getClassLoader().getResourceAsStream("user.xml");        Document document =  reader.read(stream);        List list = document.selectNodes("/users/user/email");        for(Iterator i = list.iterator(); i.hasNext(); ) {            Element element = (Element) i.next();            System.out.println(element.getName() +"="+ element.getTextTrim());        }        System.out.println("----");        //查询单一的节点        Node node = document.selectSingleNode("/users/user/email");        System.out.println(node.getName()+"==="+node.getText());        //获取指定属性的值        System.out.println(node.valueOf("@name"));        System.out.println("---");        //根据选择器获取属性返回集体        List list2 = document.selectNodes("/users/user/email/@name");        for(Iterator j = list2.iterator(); j.hasNext(); ) {            Attribute attr = (Attribute) j.next();            System.out.println(attr.getValue());        }       }    /**     *  创建一个Document,然后输出到一个xml文件     * @throws IOException      */    @Test    public void test4() throws IOException {        //创建一个Document对象        Document document = DocumentHelper.createDocument();        Element root = document.addElement("root"); //向document中添加元素        Element user = root.addElement("user");        user.addAttribute("id", "1");            //添加属性        Element id = user.addElement("id");        id.addText("01");                        //添加文体值        Element email = user.addElement("email");        email.addText("123@qq.com");        Element password = user.addElement("password");        password.addText("123");        OutputFormat format = new OutputFormat("\t", true, "UTF-8");        XMLWriter writer = new XMLWriter(new FileWriter(new File("F:\\user.xml")), format);        writer.write(document);        //注意要关流        writer.close();    }    /**     * 复制其它的xml数据文件     * @throws DocumentException      * @throws IOException      */    @Test    public void test5() throws DocumentException, IOException {        //需要先创建一个SAXReader对象        SAXReader reader = new SAXReader();        InputStream stream = Dom4jTest.class.getClassLoader().getResourceAsStream("user.xml");        Document document =  reader.read(stream);        OutputFormat format = new OutputFormat("\t", true, "UTF-8");        XMLWriter writer = new XMLWriter(new FileWriter(new File("F:\\user.xml")), format);        writer.write(document);        writer.close();    }    /**     * 使用String 字符串     * @throws DocumentException      * @throws IOException      */    @Test    public void test6() throws DocumentException, IOException {        String text = "<root><user id=\"1\"><id>01</id><email>123@qq.com</email><password>123</password></user></root>";        Document document = DocumentHelper.parseText(text);        OutputFormat format = new OutputFormat("\t", true, "UTF-8");        XMLWriter writer = new XMLWriter(new FileWriter(new File("F:\\user.xml")), format);        writer.write(document);        writer.close();    }}
2: JSON    1): 简介        JSON指的是JavaScript对象表示法(JavaScript Object Notation);        它是轻量级的文本数据交换格式且独立于语言,具有自我描述性,更易理解     2): 优点        JSON 比 XML更小,更快,更容易解析        如一般ajax数据传输则就会使用json    3): JSON的语法        以花括号保存数据(对象),        数据以键值对的形式存在,        且键需要打上双引号,        每一个键值对间需要以逗号隔开,        注意最后的一个键值对,不需要再加逗号,        它的值可以是数字,字符串(需要是双引号),逻辑值,数组,对象,null    4): 操作json数据的工具有(Gson,FastJson,Jackson,Json-lib);        推荐使用Gson;    5): Gson可以把一个java对象序列化成一个json字符串,也可以把一个json字符串反序列化成一个java对象
package com.tz.servlet.json;import java.lang.reflect.Type;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import org.junit.Test;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import com.tz.servlet.bean.User;public class GsonTest {    /*     * 序列化一个指定对象 转成 json串     */    @Test    public void test1() {        //需要先创建一个Gson对象        Gson gson = new Gson();        User user = new User(1, "123@qq.com", "123");        //把User对象序列化成一个json串        String userString = gson.toJson(user);        System.out.println(userString);    }    /*     * 序列化集合     */    @Test    public void test2() {        Gson gson = new Gson();        User user1 = new User(1, "123@qq.com", "123");        User user2 = new User(2, "456@qq.com", "456");        User user3 = new User(3, "789@qq.com", "789");        List<User> list = new ArrayList<User>();        list.add(user1);        list.add(user2);        list.add(user3);        String userListString = gson.toJson(list);        System.out.println(userListString);        Map<String, User> map = new HashMap<String, User>();        map.put("user1", user1);        map.put("user2", user2);        map.put("user3", user3);        String userMapString = gson.toJson(map);        System.out.println(userMapString);    }    /*     * 反序列化一个json字符串 转成一个对象     */    @Test    public void test3() {        Gson gson = new Gson();        String str = "{\"id\":1,\"email\":\"123@qq.com\",\"password\":\"123\"}";        User user = gson.fromJson(str, User.class);        System.out.println(user);    }    /*     * 反序列化一个json字符串 转成一个 List     */    @Test    public void test4() {        Gson gson = new Gson();        String str = "[{\"id\":1,\"email\":\"123@qq.com\",\"password\":\"123\"},{\"id\":2,\"email\":\"456@qq.com\",\"password\":\"456\"},{\"id\":3,\"email\":\"789@qq.com\",\"password\":\"789\"}]";        Type type = new TypeToken<ArrayList<User>>() {}.getType();        ArrayList list = gson.fromJson(str, type);        System.out.println(list);       }    /*     * 反序列化一个json字符串 转成一个 Map     */    @Test    public void test5() {        Gson gson = new Gson();        String str = "{\"user1\":{\"id\":1,\"email\":\"123@qq.com\",\"password\":\"123\"},\"user2\":{\"id\":2,\"email\":\"456@qq.com\",\"password\":\"456\"},\"user3\":{\"id\":3,\"email\":\"789@qq.com\",\"password\":\"789\"}}\r\n" +                 "";        Type type = new TypeToken<HashMap<String, User>>() {}.getType();        Map<String, User> map = gson.fromJson(str, type);        System.out.println(map);    }}

JSON转成js对象(解析成一个数组)

原创粉丝点击