一:XML 和 JSON 的简单介绍
xml 和 json 都是程序和程序之间传送和交流数据的方式。
都是独立于 各种编程语言 而存在的。
早些时间 xml 用的非常多,后来 json 出现了,json 比 xml 更简洁、更易解析,所以 json 就兴起了。
xml
全程: extensible markup language , 可扩展标记语言。
.xml 文件是保存 xml 数据的一种方式,不要将 xml 语言狭隘的理解成 xml 文件。
-
语法格式
文档声明 : <?xml version="1.0" encoding="UTF-8"?>
注释:
必须有 且仅有一个 根节点。
可以自定义其他节点。
一个 xml 的示例:
<?xml version="1.0" encoding="UTF-8"?> <persons> <person> <name>李四</name> <length>180cm</length> </person> <person> <name>李四</name> <length>200cm</length> </person> </persons>
-
CDATA 语法:
某些文本,包含大量的 < 、 & 等等这样的符合,这在 xml 里是被解析成非法的字符。
所以可以用 CDATA 来括起来, 里面的内容会被解析器所忽略。
格式如下:
<![CDATA[ 自己写的数据。。 ]]> -
Java 解析 xml 的方式
-
SAX 解析
事件驱动的机制。
逐行读取,读一行,解析一行。
只读的方式,不能修改。
不知道当前节点的层级关系。
单向解析,不能往回走,只能往下读取。
-
DOM 解析
直接在内存中加载文档树,整个都读完了。
通过操作文档树,来完成数据的删、改、查。
2.1 JDOM 解析
Java 特定的文档模型,方便了 Java 程序员。
2.2 DOM4J 解析
是 JDOM 的一个智能分支。是一个非常优秀的 Java XML API。
Hibernate 里用到了 DOM4J 。
-
JSON
全程: JavaScript Object Notation , JavaScript 对象表示法。
是一种轻量级的数据交换格式。
用的比较多的 2 种 JSON 实现方式: 谷歌的 GSON 和 阿里的 FastJson。
-
JSON 格式示例:
key 一般要用 引号 引起来
{ "name":"伟杰老师", "age":18, "pengyou":["张三","李四","王二","麻子", { "name":"野马老师", "info":"像匹野马一样狂奔在技术钻研的道路上" }], "heihei":{ "name":"大长刀", "length":"40m" } }
-
Gson
对象 —> JSON 字符串 : new Gson().toJson( 对象 )
JSON 字符串 —> 对象 : new Gson().fromJson(JSON字符串, 对象类型.class)
-
FastJson
对象 —> JSON 字符串 : JSON.toJSONString( 对象 )
JSON 字符串 —> 对象 : JSON.parseObject( JSON字符串, 对象类型.class )
二: URL 类和一些神奇的 API
1.先了解url : Uniform Resource Location 统一资源定位符。
浏览器也不是只能访问 Web服务器,也可以访问 ftp服务器,也可以浏览本地资源,也可以发送邮件;
所以协议名对应的也有 http: /https: 、ftp: 、file: 、mailto: 等等。
2. 简单点来说,写了 斜杠 / , 就会当成目录来对待。。。
后面有斜杠的,表示前面是一个目录;
后面没斜杠的,表示这是一个资源。(如果没有找到这个资源,浏览器会在后面自动加上一个 斜杠/ 。( 也只有浏览器才会,浏览器会去解析这个 url))
举几个栗子:
-
http://www.baidu.com , 浏览器会自动加上 / , 会去访问根目录下,预先配置好的默认文件资源。
-
http://www.baidu.com/ ,
后面的 / 代表访问的是根目录,找默认的资源。(一般是 index.html 或 default.html)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Amw0FGao-1593263769367)(C:\Users\ADMINI~1\AppData\Local\Temp\1588481464705.png)]
-
http://www.baidu.com/folder/ , 访问 folder 文件夹下, 预先配置好的文件资源。
-
http://www.baidu.com/folder ,
访问 folder 这个资源(或者名字为 folder 的Servlet),如果没有找到这个资源,浏览器就在后面加上一个斜杠 / , 此时情况就同上了。
URL 的编码
在 Java 里,用 URLEncoder 和 URLDecoder 这 2 个类来对 url 里的参数进行编码和解码。
因为在传输 url 时, 服务器只认 ASCII 编码字符集。 对于一些 url 里有中文、日文 等等参数的,服务器就不认识,这时候就需要对这些参数进行编码转换,注意是对参数,而不是对整个 url 地址。
每个字符编码过后,就会变成以 % 开头的文本。
注意这是编码规则,而不是加密算法。
URLEncoder :
将普通字符串转换成 application/x-www-from-urlencoded 字符串
字符串中的非西欧字符的内容,会被转化成 %XX 的内容, XX 为十六进制的数字。
URLDecoder:
将 application/x-www-from-urlencoded 字符串转换成普通字符串
操作 url 链接的一些小技巧 : 获取文件名称
URL url = new URL(“网址”);
String name = url.getFile(); //获取文件路径+名称
name = name.substring(name.lastIndexOf("/")+1,name.length()); // 从最后一个/开始截取, 截取到结尾
一些神奇的 API 地址:
举牌类:
http://wx.zemuo.com/jupai/other/img.php?id=2&txt1=123&txt2=321&txt3=&color=000
美女举牌
http://wx.zemuo.com/jupai/meizi/img.php?id=3&txt1=123&txt2=321&txt3=&color=0f0f0f
帅哥举牌
http://wx.zemuo.com/jupai/man/img.php?id=6&txt1=123&txt2=321&txt3=&color=0f0f0f
奖状类
http://wx.zemuo.com/paper/award/img.php?txt1=txt1-2&txt2=张三
参数解释:
txt1=text-数字 中的数字表示奖状类型。
玛莎拉蒂订单
http://wx.zemuo.com/paper/news/msld/img.php?id=2&txt1=王二狗
淘宝三万亿活动
http://wx.zemuo.com/app/ali3m/img.php?txt1=下午18:22&txt2=中国移动&txt3=12&txt4=0.00001
猴子新闻
http://wx.zemuo.com/paper/news/hdsl/img.php?txt1=新闻内容
飞机游艇订单
http://wx.zemuo.com/paper/news/srfj/img.php?txt1=姓名
一箱钱
http://wx.zemuo.com/paper/news/ydq/img.php?id=2&txt1=姓名1&txt2=钱能解决的问题,在我这里都不是问题&txt3=姓名2
娃娃订单
http://wx.zemuo.com/paper/news/cqww/img.php?txt1=姓名