XML及JSON介绍与解析

什么是 XML?

  • XML 指可扩展标记语言(EXtensible Markup Language)
  • XML 是一种标记语言,很类似 HTML
  • XML 的设计宗旨是传输数据,而非显示数据
  • XML 标签没有被预定义。您需要自行定义标签
  • XML 被设计为具有自我描述性
  • XML 是 W3C 的推荐标准

JSON 简介

JSON: JavaScript Object Notation(JavaScript 对象标记法)。

JSON 是一种存储和交换数据的语法。

JSON 是通过 JavaScript 对象标记法书写的文本。

1.XML解析

package lib.lib.Demo;

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import javax.print.Doc;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.util.List;

public class Demo1 {
    public static void main(String[] args) throws Exception {
        FileInputStream fis=new FileInputStream("D://Demo1.xml");
        SAXReader sr=new SAXReader();
        Document doc=sr.read(fis);
        Element root = doc.getRootElement();
        System.out.println(root.getName());
        List<Element> es=root.elements();
        for(int i=0;i<es.size();i++){
            Element book=es.get(i);
            System.out.println(book.elementText("name"));
            System.out.println(book.elementText("info"));
            System.out.println("----------");
        }
        fis.close();

    }
}

2.XPATH解析

package lib.lib.Demo;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.List;

public class Demo2 {
    public static void main(String[] args) throws IOException, DocumentException {
        FileInputStream fis=new FileInputStream("D://Demo1.xml");
        SAXReader sr=new SAXReader();
        Document doc=sr.read(fis);
        //通过文档对象+xpath,查找所有的name节点
        List<Element> names=doc.selectNodes("//name");
        for(int i=0;i<names.size();i++){
            System.out.println(names.get(i).getName());
            System.out.println(names.get(i).getText());
        }
        //当查询结果为一个时可以用 doc.selectSingleNode

        fis.close();
    }
}

3.XML生成

package lib.lib.Demo;

import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
import org.dom4j.io.XMLWriter;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class Demo3 {
    public static void main(String[] args) throws IOException {
        //1.通过文档帮助器,创建一个文档对象
        Document doc= DocumentHelper.createDocument();
        //2.给文档添加第一个节点(根节点)
        Element books=doc.addElement("books");
        //3.通过根节点,丰富子节点
        for(int i=0;i<10;i++){
            Element book=books.addElement("book");
            Element name=book.addElement("name");
            name.setText("锄禾日当午");
            Element info=book.addElement("info");
            info.setText("汗滴禾下土");
            book.addAttribute("id",100+i+" ");

        }
        //4.创建一个文件输出流
        FileOutputStream os=new FileOutputStream("D://Demo2.xml");
        //5.将输出流转换为XML输出流
        XMLWriter xw=new XMLWriter(os);
        //6.写出文档
        xw.write(doc);
        //7.释放资源
        xw.close();
        System.out.println("打印完毕");
    }
}

4.JSON-GSON(google)

package JSON;

import com.google.gson.Gson;

public class Demo1 {
    public static void main(String[] args) {
        //1. 创建Gson对象
        Gson g=new Gson();
        Book b=new Book("100","金苹果","锄禾日当午");
        String s = g.toJson(b);
        System.out.println(s);
    }
}

GSON转换

package JSON;

import com.google.gson.Gson;

public class Demo2 {
    public static void main(String[] args) {
        //GOOGLE Json
        //1.创建Gson对象
        Gson g=new Gson();
        Book b=g.fromJson("{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"锄禾日当午\"}",Book.class);
        System.out.println(b.getId());
    }
}

5.JSON-fastJSON

package JSON;
import com.alibaba.fastjson.JSON;
public class Demo3 {
    public static void main(String[] args) {
        Book b=new Book("1002","唐诗三百首","床前明月光,地上鞋两双");
        String json = JSON.toJSONString(b);
        System.out.println(json);
    }
}
package JSON;

import com.alibaba.fastjson.JSON;

public class Demo4 {
    public static void main(String[] args) {
        //1. 转换 :{"id":"1002","info":"床前明月光,地上鞋两双","name":"唐诗三百首"}
        Object b = JSON.parse("{\"id\":\"1002\",\"info\":\"床前明月光,地上鞋两双\",\"name\":\"唐诗三百首\"}");
        System.out.println(b);
    }
}

6.Gson和Fastjson的区别
      Gson是目前功能最强的Json解析神器, 可以通过toJson与fromJson两个转换函数两个函数进行对象的序列号和反序列化,可以对复杂类型的bean到json之间,进行转换,精确度无与伦比。同时,是无依赖,不需要例外额外的jar,能够直接跑在JDK上。
FastJson是阿里用Java语言编写的高性能的JSON处理器,在复杂类型的Bean转换Json上会出现一些问题,可能会出现引用的类型,导致Json转换出错,需要制定引用。Gson的优势是转换复杂对象,性能消耗比FastJson大;而FastJson优势是解析转换复杂对象的速度最快,但是对一些复杂转换就会出现问题。

      在开发中,如果性能满足的情况下,推荐使用Gson。因为亲遇到,对于复杂类型,比如原子类例如AtomicLong属性,fastjson会按照基本类型解析,而不是对象。这样会导致反序列化的时候数据不完整,所以,强烈建议Gson。
 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值