当前位置: 首页 > 工具软件 > XML to JSON > 使用案例 >

XML json

钱选
2023-12-01

JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换语言,以文字为基础,且易于让人阅读


,同时也方便了机器进行解析和生成。JSON简单说就是javascript中的对象和数组,所以这两种结构就


是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构,其可以将JavaScript 对象中表示的


一组数据转换为字符串,然后就可以在函数之间轻松地传递这个字符串,或者在异步应用程序中将字符


串从Web客户机传递给服务器端程序。JSON采用完全独立于程序语言的文本格式,但是也使用了类C语言


的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交


换语言。[1]




json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组2种结构,通过这两种结构


可以表示各种复杂的结构


  1、对象:对象在js中表示为“{}”扩起来的内容,数据结构为 {key:value,key:value,...}的键


值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值


方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。


  2、数组:数组在js中是中括号“[]”扩起来的内容,数据结构为 


["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 


数字、字符串、数组、对象几种。


用JSON表示如下:

{

"name":"中国",

"province":[

{

"name":"黑龙江",

"cities":{

"city":["哈尔滨","大庆"]

}

},

{

"name":"广东",

"cities":{

"city":["广州","深圳","珠海"]

}

},








XML

可扩展标记语言
可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言。

构建 XML
如前所述,XML 文件由内容和标记组成。您通过以标记包围内容的方式将大部分内容包含在元素中。例

如,假设您需要创建一本 XML 烹饪书。您需要用 XML 编写名为 Ice Cream Sundae 的食谱。为了标记

食谱名,您需要将这个文本包含到元素中,即分别在文本的首末两端添加开始和结束标记。可以将元素

命名为 recipename。要标记元素的开始标记,像这样将元素名放到尖括号中(<>):<recipename>。然

后输入文本 Ice Cream Sundae。在文本的后面输入结束标记,即将元素名放在尖括号内,然后在元素名

前面加上一个终止斜杠(/),比如:</recipename>。这些标记构成一个元素,您可以在元素的内部添

加内容或其他元素。
您可以为某个文档或文档集创建元素名。可以创建规则让元素根据您的特定需求组合起来。元素名可以

是比较具有针对性的,也可以是比较通用的。您还可以创建决定添加何种元素的规则。这些规则可以是

严格的,也可以是松散的,这完全由您决定。一定要为文档创建元素,以识别您认为重要的部分。
开始创建 XML 文件
XML 文档的第一行可以是一个 XML 声明。这是文件的可选部分,它将文件识别为 XML 文件,有助于工

具和人类识别 XML(不会误认为是 SGML 或其他标记)。可以将这个声明简单地写成 <?xml?>,或包含

XML 版本(<?xml version="1.0"?>),甚至包含字符编码,比如针对 Unicode 的 <?xml

version="1.0" encoding="utf-8"?>。因为这个声明必须出现在文件的开头,所以如果打算将多个小的

XML 文件合并为一个大 XML 文件,则可以忽略这个可选信息。
创建根元素
根元素的开始和结束标记用于包围 XML 文档的内容。一个文件只能有一个根元素,并且需要使用 “包

装器” 包含它。清单 1 显示了经过删节的示例,其中的根元素名为 <recipe>。(参见 下载 小节获得

完整的 XML 文件)。
清单 1. 根元素
<?xml version="1.0" encoding="UTF-8"?>
<recipe>
</recipe>
在构建文档时,内容和其他标记必须放在 <recipe> 和 </recipe> 之间。
命名元素
标记的大小写保持一致
创建 XML 时,要确保开始和结束标记的大小写是一致的。如果大小写不一致,在使用或查看 XML 时将

出现错误。例如,如果大小写不一致,Internet Explorer 将不能显示文件的内容,但它会显示开始和

结束标记不一致的消息。
到目前为止,都使用 <recipe> 作为根元素。在 XML 中,先要为元素选择名称,然后再根据这些名称定

义相应的 DTD 或 schema。创建名称时可以使用英文字母、数字和特殊字符,比如下划线(_)。下面给

出命名时需要注意的地方:
元素名中不能出现空格。
名称只能以英文字母开始,不能是数字或符号。(在第一个字母之后就可以使用字母、数字或规定的符

号,或它们的混合)。
对大小写没有限制,但前后要保持一致,以免造成混乱。
我们继续以前面的示例为例,如果添加了名为 <recipename> 的元素,它将有一个开始标记

<recipename> 和相应的结束标记 </recipename>。
清单 2. 更多元素
<?xml version="1.0" encoding="UTF-8"?>
<recipe>
<recipename>Ice Cream Sundae</recipename>
<preptime>5 minutes</preptime>
</recipe>
XML 文档可以使用内部不包含任何内容的空标记,这些标记可以表示为单个标记,而不是一组开始和结

束标记。以类似于 HTML 的文件为例,里面的 <img src="mylogo.gif"> 是一个独立的元素。它不包含

任何子元素或文本,因此它是一个空元素,您可以将它表示为 <img src="mylogo.gif" />(以一个空格

和熟悉的终止斜杠结束)。
嵌套元素
嵌套 即把某个元素放到其他元素的内部。这些新的元素称为子 元素,包含它们的元素称为父 元素。

<recipe> 根元素中嵌套有几个其他元素,如 清单 3 所示。这些嵌套的子元素包括 <recipename>、

<ingredlist> 和 <preptime>。<ingredlist> 元素内部包含多个子元素 <listitem>。XML 文档可以使

用多层嵌套。
一个常见的语法错误是父元素和子元素的错误嵌套。任何子元素都要完全包含在其父元素的开始和结束

标记内部。每个同胞(Sibling)元素必须在下一个同胞元素开始之前结束。
清单 3 的代码显示了正确的嵌套。这些标记的开始和结束没有与其他标记混合 在一起。
清单 3. 正确嵌套的 XML 元素
<?xml version="1.0" encoding="UTF-8"?>
<recipe>
<recipename>Ice Cream Sundae</recipename>
<ingredlist>
<listitem>
<quantity>3</quantity>
<itemdescription>chocolate syrup or chocolate fudge</itemdescription>
</listitem>
<listitem>
<quantity>1</quantity>
<itemdescription>nuts</itemdescription>
</listitem>
<listitem>
<quantity>1</quantity>
<itemdescription>cherry</itemdescription>
</listitem>
</ingredlist>
<preptime>5 minutes</preptime>
</recipe>
添加属性
有时候要为元素添加属性。属性由一个名称-值对构成,值包含在双引号中("),比如:

type="dessert"。属性是在使用元素时存储额外信息的一种方式。在同一个文档中,可以根据需要对每

个元素的不同实例采用不同的属性值。
您可以在元素的开始标记内部输入一个或多个属性,比如:<recipe type="dessert">。如果要添加多个

属性,各个属性之间使用空格分开,比如:<recipename cuisine="american" servings="1">。清单 4

显示了当前的 XML 文件。
清单 4. 带有元素和属性的 XML 文件
<?xml version="1.0" encoding="UTF-8"?>
<recipe type="dessert">
<recipename cuisine="american" servings="1">Ice Cream Sundae</recipename>
<preptime>5 minutes</preptime>
</recipe>
您可以根据需要使用任意数量的属性。要考虑需要添加到文档的细节。如果要对文档分类,属性尤其有

用,比如按照菜谱的 type 进行分类。属性名可以包含在元素名中使用的字符,规则也是类似的,即字

符之间不能带有空格,名称只能以字母开始。
回页首
构造良好并且有效的 XML
如果您根据结构规则创建 XML,就很容易实现构造良好的 XML。构造良好的 XML 即遵循所有 XML 规则

创建的 XML:正确的元素命名,嵌套,属性命名等等。
要实现构造良好的 XML 取决于如何处理 XML。但考虑一下前面提到的示例,它要求根据菜谱类型进行分

类。您需要确保每个 <recipe> 元素都包含 type 属性,以对菜谱进行分类。能够正确验证并确保存在

属性值是非常重要的(避免出现双关语)。
验证 就是根据元素规则检查文档的结构,以及如何为每个父元素定义子元素。这些规则是在 文档类型

定义(Document Type Definition,DTD)或模式(schema )中定义的。验证要求您创建自己的 DTD 或

schema ,然后在 XML 文件中引用 DTD 或 schema 文件。
为了实现验证,必须在 XML 文档的顶部附近包含文档类型(DOCTYPE)。这行代码将引用用于验证文档

的 DTD 或 schema (元素和规则列表)。例如,DOCTYPE 可能类似于 清单 5。
清单 5. DOCTYPE
<!DOCTYPE MyDocs SYSTEM "filename.dtd">
这个例子假设元素列表文件的名称是 filename.dtd,并且位于您的计算机上(如果指向公共文件位置,

则 SYSTEM 和 PUBLIC 是相对的)。
回页首
使用实体
实体 可以是文本短语或特殊字符。它们可以指向内部或外部。必须正确地声明和表示实体,以避免错误

和确保正确显示。
您不能直接在内容中输入特殊字符。如果要在文本中使用符号,必须使用它的字符代码将它设置为实体

。您可以将短语(比如公司名)设置为实体,然后就可以在内容中使用该实体。为了设置实体,必须先

为它创建一个名称,然后将它输入到内容中,以 and 符号(&)开始,并以分号(;)结束 — 例如,

&coname;。然后在 DOCTYPE 的方括号([])内部输入代码,如 清单 6 所示。这个代码识别表示实体的

文本。
清单 6. ENTITY
<!DOCTYPE MyDocs SYSTEM "filename.dtd" [ <!ENTITY coname "Rabid Turtle
Industries"
]>
使用实体可以避免反复输入相同的短语和信息。在很多情况下它还使得调整文本更加容易(变更公司名

时),只需对实体定义进行简单调整。

用XML表示中国部分省市数据如下:

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

<country>

<name>中国

<province>

<name>黑龙江</name>

<cities>

<city>哈尔滨</city>

<city>大庆</city>

</cities>

</province>

<province>

<name>广东</name>

<cities>

<city>广州</city>

<city>深圳</city>

<city>珠海</city>

</cities>

</province>

<province>

<name>台湾</name>

<cities>

<city>台北</city>

<city>高雄</city>

</cities>

</province>

<province>

<name>新疆</name>

<cities>

<city>乌鲁木齐</city>

</cities>

</province>

</country>













 类似资料:

相关阅读

相关文章

相关问答