一: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 的方式

    1. SAX 解析

      事件驱动的机制。

      逐行读取,读一行,解析一行。

      只读的方式,不能修改。

      不知道当前节点的层级关系。

      单向解析,不能往回走,只能往下读取。

    2. 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=姓名