前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >XML和JSON 数据交换格式

XML和JSON 数据交换格式

作者头像
斯文的程序
发布2019-11-07 17:20:43
1.2K0
发布2019-11-07 17:20:43
举报
文章被收录于专栏:带你回家带你回家

一、什么是数据交换格式?

客户端与服务器常用数据交换格式xml、json、html

二、数据交换格式应用场景

移动端(安卓、IOS)通讯方式采用http 协议+json 格式

webservice服务采用 http+xml 格式

为什么会有两种区分呢?

三、什么是json

json(javaScript Object Notation)是一种轻量级的数据交换格式,他占用宽带小,解析简单。

格式:

{ “sites”:[{"name":"chengzi"},{"sex":"男"}]}

json格式的分类:

1.对象:就是大括号括起来的内容,

格式:{"name","chengzi"}

2.数组:用[]括号括起来的内容

格式:装String 类型 ["chengzi","sex"]

常用json 解析框架

fastjson(啊里)、gson(谷歌)、jackson(springMVC自带)

使用fastjson解析json:

添加jar fastjson-1.1.43 或引入maven依赖

<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.1.43</version> </dependency>

使用fastjson api

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

解析json

static String jsonStr = "{\"sites\":[{\"name\":\"蚂蚁课堂\",\"url\":\"www.itmayiedu.com\"},{\"name\":\"每特教育\",\"url\":\"http://meiteedu.com/\"}]}"; public static void main(String[] args) { JSONObject jsonObject = new JSONObject(); // 将json字符串转为jsonbject JSONObject jsonStrObject = jsonObject.parseObject(jsonStr); JSONArray jsonArray = jsonStrObject.getJSONArray("sites"); for (Object object : jsonArray) { JSONObject stObject = (JSONObject) object; String name = stObject.getString("name"); String url = stObject.getString("url"); System.out.println(name + "---" + url); } }

组装json

JSONObject jsonObject = new JSONObject(); JSONArray jsonArray = new JSONArray(); JSONObject stObject = new JSONObject(); stObject.put("name", "蚂蚁课堂"); stObject.put("url", "http://www.itmayiedu.com"); jsonArray.add(stObject); jsonObject.put("sites", jsonArray); System.out.println(jsonObject.toJSONString());

XML 简单使用

什么是xml?

什么是XML?

它是可扩展标记语言(Extensible Markup Language,简称XML),是一种标记语言。

XML 全称为可扩展的标记语言。主要用于描述数据和用作配置文件。

XML 文档在逻辑上主要由一下 5 个部分组成:

XML 声明:指明所用 XML 的版本、文档的编码、文档的独立性信息

文档类型声明:指出 XML 文档所用的 DTD

元素:由开始标签、元素内容和结束标签构成

注释:以结束,用于对文档中的内容起一个说明作用

处理指令:通过处理指令来通知其他应用程序来处理非 XML 格式的数据,格式为

XML 文档的根元素被称为文档元素,它和在其外部出现的处理指令、注释等作为文档实体的子节点,根元素本身和其内部的子元素也是一棵树。

XML样例?

<?xml version="1.0" encoding="UTF-8"?> <students> <student1 id="001"> <微信公众号>@残缺的孤独</微信公众号> <学号>20140101</学号> <地址>北京海淀区</地址> <座右铭>要么强大,要么听话</座右铭> </student1> <student2 id="002"> <新浪微博>@残缺的孤独</新浪微博> <学号>20140102</学号> <地址>北京朝阳区</地址> <座右铭>在哭泣中学会坚强</座右铭> </student2> </students>

<?xml version="1.0" encoding="UTF-8"?>作用

xml文件头部要写的话,说明了xml的版本和编码,utf-8一般是网络传输用的编码

XML解析方式?

Dom4j、Sax、Pul

Dom4j与Sax区别

dom4j不适合大文件的解析,因为它是一下子将文件加载到内存中,所以有可能出现内存溢出,sax是基于事件来对xml进行解析的,所以他可以解析大文件的xml,也正是因为如此,所以dom4j可以对xml进行灵活的增删改查和导航,而sax没有这么强的灵活性,所以sax经常是用来解析大型xml文件,而要对xml文件进行一些灵活(crud)操作就用dom4j。

使用dom4j解析xml

解析XML过程是通过获取Document对象,然后继续获取各个节点以及属性等操作,因此获取Document对象是第一步,大体说来,有三种方式:

1.自己创建Document对象

Document document = DocumentHelper.createDocument(); Element root = document.addElement("students");

其中students是根节点,可以继续添加其他节点等操作。

2.自己创建Document对象

// 创建SAXReader对象 SAXReader reader = new SAXReader(); // 读取文件 转换成Document Document document = reader.read(new File("XXXX.xml"));

3.读取XML文本内容获取Document对象

String xmlStr = "<students>......</students>"; Document document = DocumentHelper.parseText(xmlStr);

解析xml代码

Xml配置:

<?xml version="1.0" encoding="UTF-8"?> <students> <student1 id="001"> <微信公众号>@残缺的孤独</微信公众号> <学号>20140101</学号> <地址>北京海淀区</地址> <座右铭>要么强大,要么听话</座右铭> </student1> <student2 id="002"> <新浪微博>@残缺的孤独</新浪微博> <学号>20140102</学号> <地址>北京朝阳区</地址> <座右铭>在哭泣中学会坚强</座右铭> </student2> </students>

Java代码

public static void main(String[] args) throws DocumentException { SAXReader saxReader = new SAXReader(); Document read = saxReader.read(new File("E://work//spring-ioc//src//main//resources//stu.xml")); // 获取根节点 Element rootElement = read.getRootElement(); getNodes(rootElement); } static public void getNodes(Element rootElement) { System.out.println("当前节点名称:" + rootElement.getName()); // 获取属性ID List<Attribute> attributes = rootElement.attributes(); for (Attribute attribute : attributes) { System.out.println("属性:" + attribute.getName() + "---" + attribute.getText()); } if (!rootElement.getTextTrim().equals("")) { System.out.println(rootElement.getName() + "--" + rootElement.getText()); } // 使用迭代器遍历 Iterator<Element> elementIterator = rootElement.elementIterator(); while (elementIterator.hasNext()) { Element next = elementIterator.next(); getNodes(next); } }

注意:

this.getClass().getClassLoader().getResourceAsStream(xmlPath) 获取当前项目路径xmlfsfs

XML与JSON区别

Xml是重量级数据交换格式,占宽带比较大。

JSON是轻量级交换格式,xml占宽带小

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 使用fastjson解析json:
  • 使用fastjson api
  • 解析json
  • 组装json
  • 什么是XML?
  • XML样例?
  • XML解析方式?
  • Dom4j与Sax区别
  • 使用dom4j解析xml
  • 解析xml代码
  • XML与JSON区别
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档