XML/JSON 语法随堂笔记

本文介绍了XML的基本概念,包括其平台无关性、自我描述性和关键语法,如文档声明、元素、属性、注释以及CDATA。同时,讲解了XML解析中的Document对象和Element节点的操作。接着,转向JSON,说明它是一种轻量级的数据交换格式,并展示了如何用GSON和FastJson进行Java对象与JSON之间的转换。最后,提供了Java生成XML文件的步骤。
摘要由CSDN通过智能技术生成

XML简介

XML是可扩展标记语言。可以计算机语言与语言之间进行交流。


        特点:1、xml具有平台无关性,是一门独立的标记语言
                     2、xml具有自我描述性

XML语法

        1、  XML 文档声明      
            <?xml version="1.0" encoding="utf-8"?>
        2、  标记(元素 / 标签 / 节点)
          xml文档,又一个个的标记组成。
          语法:
               开始标记(开放标记):<标记名称>
               结束标记(闭合标记):</标记名称>
 
               标记名称:自定义名称,必须遵循一下命名规则:
                      1、名称可以含字母、数字以及其他的字符
                      2、名称不能以数字或这标点符号开始
                      3、名称不能以字符"xml"(或者MXL、Xml)开始
                      4、名称不能包含空格,不能包含冒号( :)
                      5、名称要区分大小写
               标记内容:开始标记与结束标记之间,是标记的内容。
 
           比如<name>张三</name>
               <name>李四</name>
 
       3、一个XML文档中,必须有且且仅有允许又一个根标记。
           正例:
           <names>
               <name>张三</name>
               <name>李四</name>
           </names>
           反例:
               <name>张三</name>
               <name>李四</name>
       4、标记可以嵌套,但不能交叉。
           正例:
               <person>
                   <name>盘古</name>
                   <age>千大数</age>
               </person>
           反例:
               <person>
                   <name>鸿蒙<age></name>
                   百大数</age>
               </person>
        5、标记的层次称呼(子标记,父标记,兄弟标记,后代标记,祖先标记)
           例如:
               <persons>
                   <person>
                          <name>女娲</name>
                          <age>十大数</age>
                   </person>
                      <person>
                          <name>东皇太一</name>
                          <age>十大数</age>
                      </person>
                   </persons>
               name是person的子标记,也是person的后代标记
               name是persons的后代标记
               name是age的兄弟标记
               person是name父标记
               persons是name的先祖标记
 
        6、标记名称 允许重复
 *       7、标记除了开始和结束,还要属性。
               标记中的属性,在标记开始时描述,由属性名称和属性值组成
               格式:
                   在开始标记中描述属性。
                   可以包含0~n 个属性,每一个属性是一个键值对!
                   属性名称不能重复 ,键 与 值之间使用等号连接,多个属性之间使用空格分割
                   属性值必须被引号引住。
               案例:
                   <persons>
                       <person id="1000032" groupid="1">
                           <name>天波旬</name>
                           <age>千无量大海</age>
                       </person>
                       <person>
                           <name>欲色天</name>
                           <age>千无量大海</age>
                       </person>
                   </persons>
 
        8、注释:
           注释不能写在文档声明前
           注释不能嵌套注释
               格式:
                   注释开始   <!--
                   注释结束   -->
     语法进阶CDATA
       CDATA是不应该由XML解析器解析的文本数据
       像 "<" 和 "&" 字符在XML元素中都是非法的
       "<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
       "&" 会产生错误,因为解析器会把该字符解释为字符实体的开始。
 
       某些文本,比如 JavaScript 代码,包含大量 "<" 和 "&" 字符。为了避免错误,
       可以将脚本代码定义CDATA。
 
       CDATA部分中的所以内容都会被解析器忽略。
       CDATA部分开始:   <![CDATA[
               结束:      ]]>
        <name><![CDATA[哈<a></a>哈></name>

XML解析

文档对象Document
       指的是加载导内存导整个文档
 
       常用方法:
          1、通过文档对象,获取XML文档中的根元素对象。
               Element root = doc.getRootElement();
          2、添加根节点
               Element root = doc.addElement("根节点名称");
 
    元素对象 Element
       指的是XML文档中的单个节点
 
       常用方法:
           1、获取节点名称
               String getName();
           2、获取节点内容
               String getText();
           3、设置节点内容
               String setText();
           4、根据节点的名称,获取匹配名称的第一个子节点对象
                Element element(String 子节点名称);
           5、获取所以子节点对象
               List<Element> element();
           6、获取节点的属性值
               String attributevalue(String 属性名称);
           7、获取子节点的内容
               String elementText(String 子节点名称);
           8、添加子节点
               Element addElement(String 子节点名称);
           9、添加属性
               Element setAttribute(String 属性名称,
String 属性值);

通过java生成XML

步骤
      1、通过文档帮助器(DocumentHelper),创建空的文档对象
        Document doc = DocumentHelper.createDocument();
      2、通过文档对象,向其中添加根节点
        Element books = doc.addElement("根节点名称");
      3、通过根节点对象root ,丰富子节点
        Element book = books.addElement("子节点名称");
      4、创建一个文件输出流,用于存储XML文件
        FileOutputStream fos = new FileOutputStream("要存储的位置,路径");
      5、将文件输出流,转化为XML文档输出流
        XMLWriter xw  = new XMLWriter(fos);
      6、写出文档
        xw.write(doc);
      7、释放资源
        xw.close();

根据对象,获取内容生成XML文件

        1、创建需要获取的对象、类
           Person p = new Person();
        2、设置节点的内容
           p.setName("大梵天");
           p.setAge(千无量大海);

         //XStream使用
        3、创建XStream对象
          XStream x = new XStream();
        4、修改某个类型生成的根节点(可选的,默认为包明。类名)
          x.alias("person",Person.class);
        5、 传入对象, 开始生成
          String xml = x.toXML(p);
          System.out.println(xml);
    }

JSON简介

JavaScript object Notation  JS对象简谱 ,是一种轻量级的数据交换格式。
格式要求:一个对象,由一个打括号表示。括号中 描述对象的属性与函数.通过键值对来描述对象的属性与函数
       (可以理解为,打括号中,包含的是一个个的键值对。)
       格式:
           键与值之间使用冒号连接,多个键值对之间使用逗号分隔。
           键值对的键  应该使用引号 引住(通常Java解析时,键不实用引号会报错,而JS能正常解析)
           键值对的值  可以是JS中的任意类型的数据
      数组格式:
           中JSON格式中可以与对象相互嵌套
           [元素1、元素2、……]

GSON解析:

将对象(java)转换为 GSON 字符串
       在需要转换JSON字符串的位置编写代码:
         String json = new Gson().toJson(需要转换的对象);
      如:
         book b = BookDao.find();
         String json = new Gson.toJson(b);
         System.out.println(json)
将GSON字符串转换为对象(Java)
        需要在转换Java对象的位置编写代码:
       对象 = new Gson().fromJson(JSON字符串,对象类型.class);
     如:
        String json = {"id":"100","name":"文章","info":"内容"}
        Book book = new Gson().fromJson(json,Book.class);
        System.out.println(book);
使用HashMap将GSON中的数组转换为对象(Java)
       List 数组元素键名称 = (List) data.get("数组元素键名称");
           for (int i = 0; i < 数组元素键名称.size(); i++) {
              System.out.print(数组元素键名称.get(i)+",");
          }

Fast Json解析:

Java转换为 fastjson 字符串

String json = JSON.toJSONString(对象);
System.out.println(json);

将fastjson 字符串转换Java

Book book = JSON.parseObject("fastjson字符串", Book.class);
System.out.println(book);
System.out.println(book.getName());

将fastjson的数组格式转换Java

List<String> s = JSON.parseArray("[\"元素1",\"元素2",\"元素3"]", String.class);
System.out.println(s.get(元素坐标));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值