XML JSON

XML文档编写

XML & HTML

XML:extensible markup language可扩展标记语言

XML HTML
后缀 .xml .html .htm
可扩展性 支持自定义标签 不支持自定义标签,都是预定义的
严谨性 更严谨:
必须有合理的闭合符号
只能有一个根标签
属性值必须有单双引号
区分大小写
不严谨:
标签闭合符/可不写
属性单双引号可不写
不区分大小写
作用 文件配置 浏览器页面展示

语法

xml的第一行必须是命名空间(如下,限制了版本号和编码格式)

<? xml version="1.0" encoding="UTF-8"?>

属性值必须由单双引号包裹
必须有合理的闭合符号
有且只能有一个根标签
标签区分大小写

组成

命名空间
引入使用的dtd约束文档 XXX.dtd
标签及内容

自定义标签的约束限制

dtd

描述自定义标签约束,是一种简单的约束

约束内容

有哪些标签
标签间的嵌套关系
标签属性
标签出现次数

dtd示例 解释 相关标签 标签用途
<! ELEMENT users(user*)> users是整个xml的根标签,users下可以有user这个子标签(0-无数次) ELEMENT
(XX)
+ *
定义标签名
标签下可以存在XX子标签
正则标准,表示出现次数
<! ELEMENT user(username+,password)> user下可以有username和password两个标签,其中username至少出现1次 + *


正则标准,表示出现次数
<! ELEMENT username(#PCDATA)> username标签内容为字符串 #PCDATA 内容为字符串
<! ELEMENT password(#PCDATA)> password标签内容为字符串 #PCDATA 内容为字符串
<! ATTLIST user number ID #REQUEIRED> user标签下必须由number这个属性,且number属性是唯一标识 ATTLIST
#REQUEIRED
#ID
用于定义标签的属性
该属性是必写的
该属性是唯一标识(不可重复)

Schema(xsd)

在xml的基础上限制了标签内容&属性的取值范围合理性

定义可出现在文档中的元素
定义可出现在文档中的属性
定义哪个元素是子元素
定义子元素的次序
定义子元素的数目
定义元素是否为空,或者是否可包含文本
定义元素和属性的数据类型
定义元素和属性的默认值以及固定值

对标签的属性通过type=""进行定义,再对该type进行额外定义

xml解析

将xml中的内容读取到内存

解析方式

  • dom解析
    将xml内容整体解析到内存,形成一颗dom树,可删改属性但耗内存;
    适用场景:解析服务器中的xml(服务器内存大且增删改需求大)

  • sax解析
    将xml内容逐行解析到内存(事件驱动),不可删改属性但省内存;
    适用场景:解析移动设备中的xml(内存小且增删改需求少)

解析器

解析器

解析工具/解析器 介绍 解析方式
dom4j 可以使用dom/sax方式解析
jsoup 类似js/jQuery的方法 用dom方式解析
pull Android自带的解析器 使用sax方式解析

Jsoup解析使用

方式1:

页面元素对象的类:Node–Element–Document
document对象的方法:
getElementById
getElemenstByClass
getElementsByTagName
attr
getElementByAttribute
getElementByAttributevalue

方式2:选择器

Element对象.select( “#2” );

选择器名 写法 含义
id选择器 #2 id值为指定值 的元素 id=“2”
类选择器 .t class=“t” 指定类的元素
标签选择器 name <name>标签对应元素
后代选择器 .t > name class=“t” 标签对应元素下<name>子标签对应的元素
属性选择器 span[id=2] 标签span下存在id属性且属性值为2的元素
方式3:JsoupXpath.jar

导包,创建jxdocument对象,调用selN selNOne 等方法,根据匹配规则 配置路径的规则 获取元素对象

在这里插入图片描述

JSON

含义:JS 对象表示法(JavaScript Object Notation),是一种 对象在前端页面进行传输和表示的形式
比xml更小更快更易解析
用于存储、交换文本信息

语法

标准形式

	var person={"键1":"值1","键2":"值2","键3":"值3"...};

键 可以使用"" 或 ‘’ 包裹或不包裹
值 字符/字符串必须使用"" 或 ‘’ 包裹;数字无需包裹,数组用[1,2,3]表示
键值间用:连接

JSON数组嵌套JSON对象

	var persons = [
			{"键1":"值1","键2":"值2"...},
			{"键1":"值1","键2":"值2"...},
			{"键1":"值1","键2":"值2"...},
			...
			];

JSON对象嵌套JSON数组

	var school={
			"grade":[{"gradelevel":"7","classnum":"8",...},{"gradelevel":"8","classnum":"12",...},{}...],
			"location":{"privince":"Shanghai","city":"Baoshan",...},
			"employee":[{"level":"4","name":"工人","empNums":"300"},
								{"level":"5","name"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值