XML和JSON 数据交换格式
为什么80%的码农都做不了架构师?>>>
一、什么是数据交换格式?
客户端与服务器常用数据交换格式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 |
解析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占宽带小
转载于:https://my.oschina.net/960823/blog/1524970
XML和JSON 数据交换格式相关推荐
- 【Java】JSON数据交换格式及其使用案例(聊天工具)
数据交换格式主要分为纯文本格式,XML格式和JSON格式.其中纯文本格式是一种简单的,无格式的数据交换方式:而XML格式和JSON格式可以带有描述信息,它们叫做"自描述的"结构化文 ...
- xml的数据交换以及xml和json数据交换的比较
一.什么是Web Service ? Web Services 是有企业发布的完成其特定商务需求的在线应用服务,其他公司或应用软件能够通过internet来访问并使用这项在线服务 WebServicc ...
- 使用 C++ 处理 JSON 数据交换格式
From: http://blog.csdn.net/xt_xiaotian/article/details/5648388 使用 C++ 处理 JSON 数据交换格式 一.摘要 JSON 的全称为: ...
- JQuery + XML作为前后台数据交换格式实践
JQuery + xml作为前后台数据交换 JQuery提供良好的异步加载接口AJAX,可以局部更新页面数据, http://api.jquery.com/category/ajax/ xml作为一种 ...
- 数据交换格式Json与XML
什么是数据交换格式: 主流的有Json.XML.HTML. 数据交换格式的应用场景: 移动端(安卓,IOS)通讯方式采用http协议+Json格式的restful风格. 很多互联网公司都是用Http协 ...
- 数据交换格式与SpringIOC底层实现
课程目标 XML和JSON Java反射机制 手写SpringIOC 什么是数据交换格式 客户端与服务器常用数据交换格式xml.json.html 数据交换格式用场景 移动端(安卓.IOS)通讯方式采 ...
- Java 数据交换格式反射机制SpringIOC原理分析
数据交换格式&反射机制&SpringIOC原理分析 什么是数据交换格式? 数据交换格式使用场景 JSON简单使用 什么是JSON? JSON格式的分类 常用JSON解析框架 使用fas ...
- 基于JSON数据交换模型的实时支付系统设计和实现
随着支付行业向各类便民账单服务.金融服务类扩展,支付内核采用固定格式数据交换模型已不能适应快速灵活开发的需要.以JSON为基础构建精简3层数据交换模型,并对JSON内存分配管理.键值使用进行优化,实现 ...
- XML和JSON两种数据交换格式的比较
目前,在web开发领域,主要的数据交换格式有XML和JSON,对于XML相信每一个web developer都不会感到陌生: 相比之下,JSON可能对于一些新步入开发领域的新手会感到有些陌生,也可能你 ...
最新文章
- HDU1053 Entropy 哈夫曼树
- python掌握程度怎么判断-Python数据分析路上,温故而知新
- 银行办理业务观察者模式解析
- IO流操作-图片操作(二)
- Artech的MVC4框架学习——第三章controller的激活
- ICCV 2021 oral 重构+预测,双管齐下提升视频异常检测性能
- 【TensorFlow-windows】(二) 实现一个去噪自编码器
- h5前期js知识点10月16日总结
- PPT精典基础教程 .
- 如何将SQL卸载干净
- UVALive - 6437题解
- 笔记本计算机左侧插,笔记本电脑插上耳机还有外音的解决方法
- Windows7系统提示当前页面的脚本发生错误怎么办
- java怎么弹出页面_java怎么样实现弹出窗口
- Python+Vue计算机毕业设计H5的豫宛旅游网站v6giy(源码+程序+LW+部署)
- outlook添加账号接受服务器,如何在outlook添加账号
- Web 3.0让网络巨头们恐慌?Dapp爆发潮的到来会更让人颤抖!
- 17 -> 详解 openWRT 的 gpio 配置关系说明
- python读取json文件,大批量写入mongo
- python干货:如何使用Python对音频进行特征提取?
热门文章
- tomcat启动停在Initializing Spring root WebApplicationContext
- 古城钟楼微博:葡萄城程序员演练技术的产物
- jenkins的基本操作
- 关于Struts2三种访问Servlet API方式的总结
- 专家:物联网时代信息安全问题亟待各方携手破题
- 别把个人信息“玩”丢了
- 使用Zabbix自带MySQL模板监控MySQL
- 在Visual Studio 2012中使用VMSDK开发领域特定语言(一)
- 【leetcode】987. Vertical Order Traversal of a Binary Tree
- C# 读取计算机CPU,HDD信息