Java---(XML & JSON)

目录

一、XML

1.1、XML语法格式

1.2、XML解析

1.3、XML文件生成

二、JSON

2.1、json格式

2.2、JSON解析

2.2.1、Gson

2.2.2、FastJson

三、相关jar包


一、XML

       XML : 可扩展标记语言。 

       特点:

  •      xml具有平台无关性, 是一门独立的标记语言.
  •      xml具有自我描述性

1.1、XML语法格式

           

1. XML文档声明

         声明格式 :<?xml version="1.0" encoding="UTF-8"?>

        必要的声明格式,  且必须写在XML文件的首行。

2.标签(元素 / 节点 / 标记)

        XML文件,实则是由各类标签组合起来的。

        标签语法:     一个标签包含下面两个标记

           开始标记----格式 :   <name>

           结束标记----格式 :   </name>   

           除了“/”,其余内容应该相同,这样才是一个完整的标签


       标签名称: 可以自定义名称,(也就印证了前文说到的 可扩展)。但必须遵循以下命名规则:

  • 名称可以含字母、数字以及其他的字符
  • 名称不能以数字或者标点符号开始
  • 名称不能以字符 “xml”(或者 XML、Xml)开始
  • 名称不能包含空格不能包含冒号(:)
  • 名称区分大小写

3.需要注意的点:

  •  一个XML文件里面,必须有且仅有一个 根标签。
  • 标签可以嵌套,但不允许交叉。(除根标签外,其余标签的开始标记,应写在上一个标签的结束标签后面)
  • 标签的层级称呼 (子标记, 父标记 , 兄弟标记, 后代标记 ,祖先标记)
  • 标签允许重复
  • 标签还有属性。例子: <person id="1001"  groupid="1">  </person>
  • 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>

4.进阶语法CDATA

       CDATA 是不应该由 XML 解析器解析的文本数据。

       像 "<" 和 "&" 字符在 XML 元素中都是非法的。

  •                "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
  •                "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始

     


    为了避免错误,可以将脚本代码定义为CDATA。

           CDATA部分中的所有内容都会被解析器忽略

          格式:   <![ CDATA[  内容   ]]>

<naem><![CDATA[   你好  ]]></naem>


1.2、XML解析

        XML解析分类:  (一共四种)

  1. SAX解析
  2. DOM解析 :(下面为扩展版)
  •              JDOM解析
  •              DOM4J解析  (常用)

各有优缺点!

下面介绍DOM4J解析。

  DOM4J解析XML 步骤:

  • 创建一个指向XML文件的输入流
  • 创建一个读取XML的工具对象
  • 读取工具对象,利用read()方法,读取XML文件输入流,返回一个文档对象
  • 通过文档对象,获取XML文件获取根标签。
  //1. 获取输入流,得到xml文件
        FileInputStream fis = new FileInputStream("XML文件,本地地址");

        //2.创建XML读取对象,此刻只是创建对象,该对象还不能读取
        SAXReader sr = new SAXReader();

        //3.此刻sr对象 通过read方法,读取;并返回一个 Document文档对象doc
        Document doc = sr.read(fis);

        //4.通过读取到xml的doc,获取根元素 ; 并返回Element对象 root
        Element root = doc.getRootElement();
URL  url = new URL( "http://******网页XML文件链接 ");

//1. 打开网页连接
URLConnection conn = url.openConnection();
        
//2.相当于 前面第一步,获取输入流,得到xml文件
InputStream  fis =  conn.getInputStream();
        
//3.创建XML  的读取对象
SAXReader sr = new SAXReader();

//4.读取,返回文档对象
Document doc = sr.read(fis);

//5.读取根元素
Element root = doc.getRootElement();

上面代码中可看到 Document    Element 。

     Document 是指获取到了整个XML文档——文档对象。 (doc ——> XML文档)

     Element  是指XML文档里面的各类 单个标签——标签对象。(root ——> 标签)

常见方法:

Element root = doc.getRootElement();    // getRootElement 获取跟标签

Element book1 = root.element("book");  //通过根标签 + element()方法  获取跟标签下面名为“book”的子标签

String name = book1.getName();  //获取该标签的 名字

String text = book1.getText();  //获取标签节点内容,如果该标签下面只含有标签,没有其余内容,则是获取不到的
        
List<Element> elements = root.elements(); //获取根标签下,所有子标签,返回一个List集合

Element id = root.addAttribute("id", "20"); //为标签设置 属性 和 值

String text = book.elementText("book"); //获取标签名为“book” 的 内容

addElement("标签名称")  //文档对象调用,则是添加根标签;   根标签调用,则是添加子标签

1.3、XML文件生成

 

//1.    通过文档帮助器,创建一个文档对象
Document doc = DocumentHelper.createDocument();
        
//2.    给文档添加第一个节点(根节点)
Element books = doc.addElement("books");
        
//3.    通过根节点, 丰富子节点
Element book1 = books.addElement("book");
book1.setText("java学习路");

Element book2 = books.addElement("book");
book2.setText("java放弃路");

//books 根标签下,就包含了两个book标签。

//4.    创建一个文件输出流
FileOutputStream fos = new FileOutputStream("books2.xml");
        
//5.    将输出流转换为XML输出流
XMLWriter xw = new XMLWriter(fos);
        
//6.    写出文档
xw.write(doc);
        
//7.    释放资源
 xw.close();

二、JSON

            JSON : 是一种轻量级的数据交换格式

                          Java对象       ← →     JSON格式的字符串   (转换)

2.1、json格式

eg: 一本书

            书名

             简介


XML格式为:

<?xml version="1.0" encoding="UTF-8"?>
<book id="1001">
        <name>金苹果</name>

        <info>锄禾日当午</info>
</book> 

JSON格式为:

{
     "name" : "金苹果",
        
     "info"  : "种植苹果"
}

JSON对象, 由一个大括号表示

            括号中描述对象的属性, 通过键值对来描述对象的属性

格式:

  • 键与值之间使用冒号连接, 多个键值对之间使用逗号分隔.
  • 键值对的应使用引号引住 (通常Java解析时, 键不使用引号会报错. 而JS能正确解析.)
  • 键值对的, 可以是JS中的任意类型的数据

2.2、JSON解析

  针对于JSON解析,我们常用的有两种解析方式  :  Gson  &&  FastJson

2.2.1、Gson

  •        JAVA对象  → JSON字符串    Gson对象.toJson()

     Gson对象   调用toJson()方法  传入java对象 , 返回JSON格式的字符串

//1. 创建Gson对象
Gson g = new Gson();
        
//2. 创建JAVA对象
Book b = new Book("100","金苹果","种植苹果真辛苦");
        
//3. 转换
String s = g.toJson(b); 

  •        JSON字符串 → JAVA对象    Gson对象.fromJson()

Gson对象   调用fromJson()方法  传入JSON字符串   ,返回Book类对象

 //1.  创建Gson对象
        Gson g = new Gson();
        
/**
*  2.    JSON格式  转换  :  
*              {
*                    "id" : "100",
*                    "name" : "金苹果",
*                    "info":"种植苹果真辛苦"
*              }
*/
        
Book b  = g.fromJson(" {\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}",Book.class);




2.2.2、FastJson

  •         JAVA对象  → JSON字符串    JSON.toJSONString ()

  JSON   调用toJSONString()方法    传入JAVA对象  , 返回JSON格式字符串

Book book = new Book("100","金苹果","种植苹果真辛苦");
        
//    转换
String json = JSON.toJSONString(book);

  •        JSON字符串 → JAVA对象    JSON.parseObject ()

JSON   调用parseObject()方法  传入JSON字符串 , 返回JAVA对象

String text = "{\"id\":\"100\",\"name\":\"金苹果\",\"info\":\"种植苹果真辛苦\"}";
        
Book book = JSON.parseObject(text, Book.class);

三、相关jar包

      针对于XML、JSON解析,java需要导入相应的jar包。下面介绍如何导入这些jar包,到我们的项目里去。 

 1.在项目工程下创建“lib”目录

2.把jar文件,复制到“lib”文件夹中区 

 

 

 

 

3. 其余操作  及 jar文件,可以通过下面网盘链接获取

  jar包链接 
  提取码:0928 

感谢观看!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

新计划

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值