XML 与 JSON 笔记

  • 一、xml 部分
  • 二、 json部分

一、xml 部分

1.xml  简介

XML是Extensible Markup Language的缩写,即可扩展标记语言。它是一种具有平台无关性,自我描述性,用来创建的标记的标记语言。
xml 的应用途径一般有三种:

  • 网络数据传输
  • 数据存储
  • 配置文件(重点)

2.xml  语法格式

1) XML文档声明

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

2)标记 ( 元素 / 标签 / 节点)
                  XML文档,由一个个的标记组成.

语法:
                  开始标记(开放标记): <标记名称>
                  结束标记(闭合标记): </标记名称> 标记名称:

自定义名称,必须遵循以下命名规则:
                  1.名称可以含字母、数字以及其他的字符
                  2.名称不能以数字或者标点符号开始
                  3.名称不能以字符 “xml”(或者 XML、Xml)开始
                  4.名称不能包含空格,不能包含冒号(:)
                  5.名称区分大小写 标记内容: 开始标记与结束标记之间 ,是标记的内容. 例如 ,我们通过标记, 描述一个人名:
张三
3) 一个XML文档中, 必须有且且仅允许有一个根标记.
正例:

<names> <name>张三</name><name>李四</name></names>

反例:

   <name>李四</name><name>麻子</name>

4)标记可以嵌套, 但是不允许交叉.
         正例:

   <person> <name>李四</name><age>18</age> </person>

反例:

  <person> <name>李四<age></name> 18</age></person>

5)标记的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
        例如:

  <persons><person> <name>李四</name> <length>180cm</length> </person><person> <name>李四</name> <length>200cm</length></person> </persons>

name是person的子标记.也是person的后代标记
        name是persons的后代标记.
        name是length的兄弟标记.
        person是name的父标记.
        persons是name的祖先标记.
6) 标记名称 允许重复

7)标记除了开始和结束 , 还有属性.

标记中的属性, 在标记开始时 描述, 由属性名和属性值 组成. 格式:在开始标记中, 描述属性. 可以包含0-n个属性, 每一个属性是一个键值对! 属性名不允许重复 , 键与值之间使用等号连接, 多个属性之间使用空格分割. 属性值 必须被引号引住.
案例:

<persons><person id="10001" groupid="1"><name>李四</name><age>18</age></person><person id="10002" groupid="1"><name>李四</name><age>20</age></person>
</persons>

3.xml  解析

所需jar包:

代码:

public class Demo1 {/*** xml解析*/public static void main(String[] args) throws IOException, DocumentException {//获取输入流  D:\data\IDEA\project_space\kkb\kkb-homework-05\src\Demo1.xmlFileInputStream in=new FileInputStream("src\\Demo1.xml");//创建xml读取对象SAXReader sr=new SAXReader();//读取并得到文档对象Document doc = sr.read(in);//通过文档获取根元素Element rootElement = doc.getRootElement();//解析元素得到根元素System.out.println(rootElement.getName());//books//获取book元素Element book = rootElement.element("book");//获取为name标签的元素Element name = book.element("name");//获取元素内容System.out.println(name.getText());//金苹果//循环遍历//获取根元素的所有子元素List<Element> elements = rootElement.elements();for (int i = 0; i <2 ; i++) {Element element = elements.get(i);System.out.println(element.attributeValue("id"));System.out.println(element.elementText("name"));System.out.println(element.elementText("info"));}in.close();}
}

解析文件后控制台打印内容:

xml中文件内容:

<?xml version="1.0" encoding="UTF-8" ?>
<books><book id="1001"><name>金苹果</name><info>锄禾日当午</info></book><book id="1002"><name>银苹果</name><info>汗滴禾下土</info></book>
</books>

3.xml  使用XPATH快速解析

路径表达式:
通过路径快速的查找一个或一组元素 路径表达式:

  1. / : 从根节点开始查找
  2. // : 从发起查找的节点位置 查找后代节点 ***
  3. . : 查找当前节点
  4. … : 查找父节点
  5. @ : 选择属性. *
    属性使用方式:
    [@属性名=‘值’]
    [@属性名>‘值’]
    [@属性名<‘值’]
    [@属性名!=‘值’]

上节中可以使用xpath方式获取xml内容:

  /*** xml解析*/public static void main(String[] args) throws IOException, DocumentException {//获取输入流  D:\data\IDEA\project_space\kkb\kkb-homework-05\src\Demo1.xmlFileInputStream in=new FileInputStream("src\\Demo1.xml");//创建xml读取对象SAXReader sr=new SAXReader();//读取并得到文档对象Document doc = sr.read(in);Node node = doc.selectSingleNode("//name");//金苹果System.out.println(node.getText());in.close();}

二、 json部分

1)简介:

  • JSON,全称是 JavaScript Object Notation,即 JavaScript对象标记法。
  • JSON是一种轻量级(Light-Meight)、基于文本的(Text-Based)、可读的(Human-Readable)格式。
  • JSON 的名称中虽然带有JavaScript,但这是指其语法规则是参考JavaScript对象的,而不是指只能用于JavaScript 语言。
  • JSON无论对于人,还是对于机器来说,都是十分便于阅读和书写的,而且相比 XML(另一种常见的数据交换格式),文件更小,因此迅速成为网络上十分流行的交换格式。
  • 因为JSON本身就是参考JavaScript 对象的规则定义的,其语法与JavaScript定义对象的语法几乎完全相同。

2)语法规则

  • 数组(Array)用方括号(“[]”)表示。
  • 对象(0bject)用大括号(“{}”)表示。
  • 名称/值对(name/value)组合成数组和对象。
  • 名称(name)置于双引号中,值(value)有字符串、数值、布尔值、null、对象和数组。
  • 并列的数据之间用逗号(“,”)分隔

3) 使用Gson和FastJSON解析
需要jar包

  • 使用Gson解析
    代码示例:
    对象转JSON格式:
public class Demo1 {/*** json解析--1.使用JSON解析对象* @param args*/public static void main(String[] args) {//1.创建Gson对象Gson gson=new Gson();//对象转换成JSON格式Book b=new Book(1,"西游记","孙悟空三打白骨精");String s = gson.toJson(b);System.out.println(s);}
}


JSON转对象:

public class Demo2 {public static void main(String[] args) {//1.创建Gson对象Gson gson=new Gson();//{"id":,"name":"西游记","info":"孙悟空三大白骨精"}Book book=gson.fromJson("{\"id\":\"15\",\"name\":\"西游记\",\"info\":\"孙悟空三大白骨精\"}",Book.class);System.out.println(book);//需要转转的内容包含数组形式,会转换成list//{"id":"1","name":"西游记","info":"孙悟空三大白骨精","page":["唐僧","沙和尚","猪八戒"]}HashMap map=gson.fromJson("{\"id\":\"1\",\"name\":\"西游记\",\"info\":\"孙悟空三大白骨精\",\"page\":[\"唐僧\",\"沙和尚\",\"猪八戒\"]}", HashMap.class);System.out.println(map);}
}

  • 使用Fast解析:
    代码示例:
    对象转JSON格式:
public class Demo3 {/*** json解析--2.使用fastJSON* 对象转JSON格式* @param args*/public static void main(String[] args) {Book book = new Book(2, "水浒传", "108好汉");String s = JSON.toJSONString(book);System.out.println(s);}
}


JSON转对象:

public class Demo4 {/*** json解析--2.使用fastJSON* JSON格式转对象* @param args*/public static void main(String[] args) {//{"id":"1","name":"西游记","info":"孙悟空三大白骨精"}Book book = JSON.parseObject("{\"id\":\"1\",\"name\":\"西游记\",\"info\":\"孙悟空三大白骨精\"}",Book.class);System.out.println(book);//JSON格式转数组//["张三","李四","王五"]List<String> strings = JSON.parseArray("[\"张三\",\"李四\",\"王五\"]", String.class);System.out.println(strings.get(0));}
}


滴滴滴滴滴滴滴滴滴~~~~~~

xml 以及JSON学习记录相关推荐

  1. Android XML使用的学习记录

    1. 注释其中一段代码或是一行,可以采用<!-- -->,示例如下 <!--       <EditText         android:layout_width=&quo ...

  2. Java学习(第十二天)XML和JSON

    XML和json XML:可扩展标记语言(eXtensible Markup Language) 特性: 1.xml具有平台无关性,是一门独立的标记语言 2.xml具有自主描述性 学习xml的理由: ...

  3. Java学习-11 XML与JSON

    Java学习-11 XML与JSON 1.XML 1.1.简介 可扩展标记语言(eXtensible Markup Language). 特性:1. xml具有平台无关性, 是一门独立的标记语言.2. ...

  4. ASP.NETCore学习记录(一)

    ASP.NETCore学习记录(一) asp.net core介绍  Startup.cs  ConfigureServices  Configure  0. ASP.NETCore 介绍 ASP.N ...

  5. json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理

    XML文件使用 合成XML格式文本 用Serialize XML(合成XML格式文本元件)将数据转换为XML文本 上例中我们先设计了一个数据结构并为数据结构中变量做了赋值处理数据结构作为输入对象传给S ...

  6. SSM框架入门学习记录

    SSM框架入门学习记录 //项目结构 在这里插入图片描述 在这里插入图片描述 包名多种多样,命名习惯问题. 流程:Controller(接受请求)-->Service(biz)(bl)(写业务函 ...

  7. Elasticseach 从零开始学习记录(四) - 整合springboot2.x

    1. 我的springboot版本为2.2.6.RELEASE, 本文推荐elasticsearch-rest-high-level-client在           springboot里集成el ...

  8. Python学习记录day6-反射、常用模块

    Python学习记录day6-反射.常用模块 @(学习)[python] Python学习记录day6-反射常用模块 反射 常用模块 1 sys System-specific parameters ...

  9. java之学习记录 5 - 1 - 模拟拉勾项目介绍与后台系统搭建

    项目架构(此文章只供个人学习的记录) 1 项目介绍 拉勾教育后台管理系统,是提供给拉勾教育的相关业务人员使用的一个后台管理系统, 业务人员可以在这个后台管理系统中,对课程信息.讲师信息. 学员信息等数 ...

最新文章

  1. Hyperledger Fabric 智能合约实战 (7) windows安装fabric
  2. 04-Debug FS
  3. JSP JavaBean
  4. conda安装tensorflow-gpu=2.2.0
  5. 深度学习数据预处理——批标准化(Batch Normalization)
  6. 广度优先算法_算法浅谈——走迷宫问题与广度优先搜索
  7. 解决flash的虚框问题
  8. 手机怎么压缩gif动图大小?推荐一款gif压缩的工具
  9. 用艾宾浩斯曲线记忆周期来背单词是否有理论依据?
  10. 服务器备案新增网站,已经备案服务器 增加新域名
  11. 电脑在桌面点击鼠标右键反应慢
  12. 树莓派OS Lite系统安装LXDE桌面环境
  13. 【OpenGL ES】EGL简介
  14. 基于JAVA+JSP+MYSQL的出差报销管理系统
  15. Undetected
  16. Vue 过滤器、计算属性、侦听器 图解版 一目了然
  17. 您的浏览器没有获得Java Virtual Machine(JVM)支持。可能由于没有安装JVM或者已安装但是没有启用。请安装JVM1.5或者以上版本,如果已安装则启用它
  18. Java-List集合元素筛选
  19. 立体匹配 之 代价聚合 滤波器篇
  20. java的while、do while循环和案例

热门文章

  1. sg-uap mysql_SG-UAP常用注解介绍
  2. squid 简介与安装配置
  3. 数字IC后端设计实现floorplan及powerplan规划
  4. 〖Python 数据库开发实战 - MySQL篇⑦〗- MySQL的用户管理与重设用户密码
  5. 从数据开始:『安卓读书』8000 万下载量炼成记
  6. WPA入门(一) —— 到底为什么这么慢?
  7. 使用OpenCV实现偏斜文档校正
  8. 【光通信】Wi-Fi联盟——Wi-Fi 7与Wi-Fi 6相比到底有哪些变化
  9. el-table筛选数据
  10. 每天读一点好玩心理学--酒吧