0%

JavaWeb学习(十三)——XML和JSON

XML

xml数据或者xml文档只用于组织、存储数据。

  • 为xml定规则:使用DTD或Schema技术
  • 解析xml数据:使用DOM或SAX技术
  • 提供样式:XSLT可扩展样是转换语言

语法

文档声明

  • XML声明放在XML的第一行
  • version—-版本
  • encoding–编码
  • standalone–独立使用–默认是no。standalone表示该xml是不是独立的,如果是yes,则表示这个XML文档时独立的,不能引用外部的DTD规范文件;如果是no,则该XML文档不是独立的,表示可以引用外部的DTD规范文档。
  • 正确的文档声明格式,属性的位置不能改变!
1
<?xml version="1.0" encoding="utf-8" standalone="no"?>

元素

首先在这里说明一个概念:在XML中元素和标签指的是同一个东西!不要被不同的名称所迷惑了!

元素中需要值得注意的地方:

  • XML元素中的出现的空格和换行都会被当做元素内容进行处理
  • 每个XML文档必须有且只有一个根元素
  • 元素必须闭合
  • 大小写敏感
  • 不能交叉嵌套
  • 不能以数字开头

看起来好像有很多需要值得注意的地方,其实只需要记住:XML的语法是规范的!不要随意乱写!

属性

属性是作为XML元素中的一部分的,命名规范也是和XML元素一样的!

1
2
3
4
<!--属性名是name,属性值是china-->
<中国 name="china">

</中国>

注释

注释和HTML的注释是一样的

1
<!---->

CDATA

在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理。遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直接原封不动的输出

语法:

1
2
3
<![CDATA[
...内容
]]>

处理指令

处理指令,简称PI (processing instruction)。处理指令用来指挥解析引擎如何解析XML文档内容。

例如:

在XML文档中可以使用xml-stylesheet指令,通知XML解析引擎,应用css文件显示xml文档内容。

1
<?xml-stylesheet type="text/css" href="1.css"?>
  • XML代码:
1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/css" href="1.css"?>

<china>
<guangzhou>
广州
</guangzhou>
<shenzhen>
深圳
</shenzhen>
</china>
  • CSS代码:
1
2
3
guangzhou{
font-size: 40px;
}
  • 效果:

img

JDK中的XML API

①:JAXP(The Java API For XML Processing):主要负责解析XML

②:JAXB(Java Architecture for XML Binding):主要负责将XML映射为Java对象

XML解析

XML解析就是读取XML的数据!

解析方式

XML解析方式分为两种:

①:dom(Document Object Model)文档对象模型,是W3C组织推荐解析XML的一种方式

②:sax(Simple API For XML),它是XML社区的标准,几乎所有XML解析器都支持它!

常用的解析器和解析开发包的关系如下所示:

  • jaxp是jdk自带的,无需导入开发包
  • jdom需要导入开发包
  • dom4j是用的最多的,需要导入开发包

jaxp

DOM解析操作

DOM解析是一个基于对象的API,它把XML的内容加载到内存中,生成与XML文档内容对应的模型!当解析完成,内存中会生成与XML文档的结构与之对应的DOM对象树,这样就能够根据树的结构,以节点的形式对文档进行操作!

在DOM解析中有几个核心的操作接口:

  • Document【代表整个XML文档,通过Document节点可以访问XML文件中所有的元素内容!】
  • Node【Node节点几乎在XML操作接口中几乎相当于普通Java类的Object,很多核心接口都实现了它!】
  • NodeList【代表着一个节点的集合,通常是一个节点中子节点的集合!】
  • NameNodeMap【表示一组节点和其唯一名称对应的一一对应关系,主要用于属性节点的表示】

XML就是这么简单 - SegmentFault 思否

JSON

JSON:JavaScript Object Notation 【JavaScript 对象表示法】

JSON 是存储和交换文本信息的语法。类似 XML。

JSON采用完全独立于任何程序语言的文本格式,使JSON成为理想的数据交换语言。

JSON 比 XML 更小、更快,更易解析

  • javaScript原生支持JSON,解析速度会很快
  • XML解析成DOM对象的时候,浏览器【IE和fireFox】会有差异
  • 使用JSON会更简单

语法

JSON所表示的数据要么就是对象,要么就是数据

JSON语法是javaScript语法的子集,javaScript用[]中括号来表示数组,用{}大括号来表示对象,JSON亦是如此。

JSON数组

1
2
3
4
5
var employees = [
{ "firstName":"Bill" , "lastName":"Gates" },
{ "firstName":"George" , "lastName":"Bush" },
{ "firstName":"Thomas" , "lastName": "Carter" }
];

JSON对象

1
2
3
4
5
6
7
8
9
var obj = {

age: 20,
str: "zhongfucheng",
method: function () {
alert("我爱学习");
}

};

当然啦,数组可以包含对象,在对象中也可以包含数组

解析JSON

使用eval()函数来解析JSON,把JSON文本数据转换成一个JavaScript对象。

1
2
3
4
5
6
7
8
9
10
function test() {
//在写JOSN的时候,记得把带上逗号
var txt = "{a:123," +
"b:'zhongfucheng'}";

//使用eval解析JSON字符串,需要增添()
var aa = eval("(" + txt + ")");
alert(aa);

}