XML和Json孰轻孰重

XML和Json孰轻孰重

JSON:  (JavaScript Object Notation,即JavaScript对象标记)

  JSON是一种轻量级的数据交换格式,是存储和交换文本信息的语法,类似于xml,

  JSON长度比xml小,读写速度快,可以使用JavaScript内建方法直接解析转换为JavaScript对象,而且更易于人阅读,易于程序解析 

  JSON是独立语言, 什么语言都可以解析json,JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言,在JavaWeb开发中,JSON对应用的前后端解耦起着关键作用。

语法规则: 
1、数据结构:
Object:{}包含的键值对结构,key必须是string类型,value为任何基本类型或对象
Array :[]包含,逗号分隔
2、基本类型:string、number、true 、false 
读取json: 一般通过JSON.parse();方法来读取
SON 和 JS 对象互转
要实现从对象转换为 JSON 字符串,使用 JSON.stringify() 方法:
var json =JSON.stringify({a: 'Hello', b: 'World'}); //结果是 '{"a":"Hello", "b": "World"}' 

要实现从 JSON 转换为对象,使用 JSON.parse() 方法:var obj =JSON.parse('{"a": "Hello", "b":"World"}'); //结果是 {a: 'Hello', b: 'World'}

XML:

XML: (extensible Markup Langue)可扩展标记型语言
  标记型:即使用标签
  可扩展:即可以自己定义标签
用途: 1、存储数据,是主要功能
       2、也可以显示数
应用:1、不同的系统之间传输数据,数据传输的格式
      2、用来表示生活中有关系的数据
      3、常用在配置文件
语法:
1、 xml文档声明(必须写在第一行第一列)
<?xml version="1.0" encoding="utf-8"?>
中文乱码问题解决:将保存时的编码和设置打开时的编码保持一致
2、 定义元素(标签): 
只能有一个根标签,可以合理嵌套,会把空格和换行当内容来解释,区分大小写,不能以数字下划线开头,不能以xml开头,标签内不含空格和冒号
3、 定义属性: 一个标签可有多个属性
4、 注释:<!-注释->,注释不能嵌套,不能放在第一行
5、 特殊字符:特殊字符需要转义表示
6、 CDATA区,解决多个字符转义的操作,把内容放到CDATA区即可
写法:<![CDATA[内容……]]>
7、 PT指令(处理指令):
在xml中设置样式,引入css文件
Xml的约束:
1、 dtd约束
创建一个.dtd文件
:<!ELEMENT  元素名称 (子元素)>   ?、+和*表示子元素个数 |符号只能出现其中一个
<!ELEMENT  元素名称 (#PCDATA)>
引入dtd文件  1、直接写在xml中:<!DOCTYPE person [dtd语句] >
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person [
   <!ELEMENT person (name,age,grade)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT grade (#PCDATA)>
]>
<person>
  <name>张三</name>
  <age>20</age>
  <grade>90</grade>
</person>
2、引入外部:<!DOCTYPE person SYSTEM  “1.dtd”>
    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE person SYSTEM "first.dtd">
<person>
  <name>张三</name>
  <age>20</age>
</person>
first.dtd
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
3、使用外部dtd文件(网络上的)
  <!DOCTYPE 根元素 PUBLIC  “DTD名称”  “DTD文档的URL”>
     <!ELEMENT age (#PCDATA)>定义属性;<!ATTLIST  元素名  属性名 属性类型 属性约束>
DTD定义属性:
 <!ATTLIST 元素名称 属性名称  属性类型  属性约束>
属性类型:
1、 CDATA:字符串
枚举
2、 Schema约束 (比DTD更复杂) xml的约束文档(模式文档)
Xml中可有多个schema,使用命名空间区分,符合xml语法规范,支持更多数据类型,
a、 创建一个schema文件.xsd
b、 写element
c、 引入xsd文件到xml中
例子
<?xml version="1.0" encoding="UTF-8"?>
<person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" targetNamespace="http://www.example.org/1"
 xmlns:tns="http://www.example.org/1 1.xsd">
  <name>zhangsan</name>
  <age>20</age>
</person>
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/1"
 xmlns:tns="http://www.example.org/1" elementFormDefault="qualified">
  <element name="person">
     <complexType>
       <sequence>
        <element name="name" type="string"></element>
        <element name="age" type="int"></element>
       </sequence>
     </complexType>
   </element>
</schema>
<sequence>按顺序,<all>只能出现一次,<choice>只能出现其中一个,<any>表示元素的出现次数
Xml的解析
  解析方式(解析技术):
1、 Dom 把xml的层级结构在内存中分配一个树形结构,实现增删改查,但会造成内存溢出

2、 sax 采用事件驱动,边读边解析,不会内存溢出,可实现查询,不能实现增删改

基于dom和sax的解析器:三种,jaxp,dom4j(使用最多), jdom

Jaxp解析器:四个类:

dom:   DocumentBuilder类:解析器抽象类  和js操作dom类似,获取、添加、删除节点等
       DocumentBuilderFactory:解析器工厂类
  Java用Dom解析XML:
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class TestJaxp {
public static void main(String[] args) throws Exception {
//创建解析器工厂
//根据解析器工厂创建解析器
//解析xml返回document
//得到元素
DocumentBuilderFactory builderFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder=builderFactory.newDocumentBuilder();
Document document=builder.parse("src/person.xml");
NodeList list=document.getElementsByTagName("name");
for(int i=0;i<list.getLength();i++){
Node name1=list.item(i);
System.out.println(name1.getTextContent());
}
}
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前台: (1)注册登录模块:按照学校的相关规定进行注册和登录。 (2)招聘信息查看:高校毕业生们可以网站首页上查看所有的招聘信息,除此之外还可以输入公司名称或岗位名称进行搜索。 (3)用人单位模块:此模块为宣传用人单位的主要功能模块,具体包括用人单位简介、岗位需求及职责及公司介绍等功能。 (4)就业指导:学生朋友们在就业前可以通过此模块获取指导。 (5)新闻信息:为了让用户们可以了解到最新的新闻动态,本系统可以通过新闻信息查看功能阅读近期的新闻动态。 (6)在线论坛:毕业季的同学们可以通过此模块相互交流。 后台: (1)系统用户管理模块:可以查看系统内的管理员信息并进行维护。 (2)学生管理模块:通过此功能可以添加学生用户,还可以对学生信息进行修改和删除。 (3)用人单位管理模块:管理员用户通过此模块可以管理用人单位的信息,还可以对用人单位信息进行查看和维护。 (4)招聘管理模块:管理员通过此功能发布和维护系统内的照片信息。 (5)就业指导管理模块:通过此模块可以编辑和发布就业指导信息,从而好的帮助就业季的同学们。 (6)论坛管理:通过论坛管理可以查看论坛中的主题帖及里面的回复信息,除此之外还可以对论坛中的信息进行维护和管理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值