一、DOM简介

  1.XML

定义:XML是一种跨语言、跨平台的数据储存格式

  2.什么是DOM

DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内容、结构和样式的、独立于平台和语言的规范化接口。

  2.DOM的分类(级别)

(1)level1

专注HTML和XML文档模型,含有文档导航和处理功能。

 (2)level2

在level1基础上添加了样式表对象模型并提供了对XML命名空间的支持

(3)level3

规定了内容模型(DTD和Schemas)和文档验证。同时还规定了文档加载和保存、文档查看、文档格式化和关键事件。

  3.DOM模型

    1、元素节点(Element):节点类型(NodeType)为1

    2、属性节点(Attribute):节点类型(NodeType)为2

    3、文本节点(Text):节点类型(NodeType)3

    4、注释节点(Comments):节点类型(NodeType)8

    5、文档节点(Document):节点类型(NodeType)9

二、.NET中的DOM常用对象

                        .NET中基于DOM核心类

类名

说明

XmlDocument

表示一个XML文档

XmlNode

表示XML文档中的单个节点

XmlNodeList

表示排序的节点集合

XmlElement

表示一个元素

XmlAttribute

表示一个属性

XmlAttributeCollection

表示元素节点的属性集合

XmlText

表示元素或属性的文本内容

    1.XmlNode类

XmlNode类没有公共构造函数,所以不能用new关键字创建XmlNode示例

    2.XmlDocument类

派生自XmlNode类,其实例表示一个Xml文档对象。

    3.XmlNodeList类

一个节点集合类,其元素为XmlNode类型;XmlNodeList没有公共构造函数,因此不能创建和删除XmlNodeList类的实例。

    4.XmlElement类

XML文档的核心,可以表示一个XML文档中的元素节点,派生自XmlNode类

三、JSON创建对象

  1.JSON的构建结构

    --》“键/值”对的集合。

    --》值的有序列表

例:Javascript中创建JSON

  

var site=
{
url:"www.baidu.com",
name:"百度",
author:"baidu",
say:function(){document.write(this.name+"say hello")}
};

四、ASP.NET中的JSON序列化与反序列化

  1)创建JSON序列化与反序列化的帮助类

  

using System;
using System.Collections.Generic;
using System.Ling;
using System.Web;
using System.IO;
using System.Text;
using System.Runtime.Serialization.Json; namespace xxxx
{
///<summary>
/// JSON序列化与反序列化的帮助类
///</summary>
public class JsonHelper
{
public static string JsonSerializer<T>(T t)
{
DataContractJsonSerializer ser=new DataContractJsonSerializer(typeof(T));
MemoryStream ms=new MemoryStream();
ser.WriteObject(ms,t);
string jsonString=Encoding.UTF8.GetString(ms.ToArray());
ms.Close();
return jsonString;
} //JSON反序列化
public static T JsonDeserialize<T>(String jsonString)
{
DataContractJsonSerializer ser= new DataContractJsonSerializer(type(T));
MemoryStream ms=new MemoryStream(Encoding.UTF8.getBytes(jsonString));
T obj=(T)ser.ReadObject(ms);
return obj;
}
}
}

2)创建Person类

  

public class Person
{
public string Name{get;set;}
public int Age{get;set;}
}

  3)通过JSONHelper序列化Person对象

  

public partial class JSON_DeMO :System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
Person p= new Person();
p.Name="张三";
p.Age=;
string jsonString=JsonHelper.JsonSerializer<Person>(p);
Respon.Write(jsonString);
}
}

  5)通过JSONHelper反序列化JSON字符串,转换为Person对象

  

public partial class JSON_DEMO : System.Web.UI.Page
{
protected void Page_Load(object sender , EventArgs e)
{
string jsonString ="{\"Age\":28.\"Name\":\"张三\"}";
Person p=JsonHelper.JsonDeserialize<Person(jsonString);
Response.Write("反序列化JSON字符串:“”+"<br/>);
Response.Write("姓名:"+p.Name+"</br>");
Response.Write("年龄:"+p.Age);
}
}

  例:JSON序列化和反序列化集合、字典、数组的处理

  

namespace WebJSONTest
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<Person> list = new List<Person>
{
new Person{Name="张三",Age=,LastLoginTime=DateTime.Now},
new Person{Name="小白",Age=,LastLoginTime=DateTime.Now}
};
string jsonString = jsonHelper.JsonSerializer<List<Person>>(list);
Response.Write(jsonString);
}
}
}

  2.XML与JSON对象比较

    1)、客户端

对于Json数据,只需要调用JavaScript的Eval方法就可以将JSON字符串序列化成为Javascript对象,然后就可以直接访问了。

  对于XML数据,其本身是一个DOM Tree的数据结构,开发人员必须使用DOM ApI来访问处理XML数据,且各个浏览器对DOM的支持也不尽相同。

    2)、服务器端

在服务器想客户端传输数据时,由于XML出现比JSON早,所以XML优于JSON。

  3)、安全性

JSON本来是Javascript的一个安全子集,不会含有赋值和调用。因此在将JSON数据转换成为Javascript对象的时候,许多Javascript库都使用Eval函数,所以在使用JSON作为数据交换格式的时候,必须保障JSON安全。(用正则表达式检查JSON数据是否含有恶意代码关键字)。在这一点上,XML相对来说更安全。

  4)、性能

 从数据传输量来看JSON要优于XML,JSON更轻量级一些。同时在数据的解析速度上,JSON也优于XML。

  5)、数据验证的角度

XML的验证技术更成熟,而目前关于JSON的验证还比较少。

ASP.NET中的XML和JSON的更多相关文章

  1. XPath在asp.net中查询XML -摘自网络

    .NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...

  2. Rest中的XML与JSON的序列化与反序列化

    #region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...

  3. XPath在asp.net中查询XML

    .NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...

  4. ASP.NET中把xml转为dataset与xml字符串转为dataset及dataset转为xml的代码

    转自:http://www.cnblogs.com/_zjl/archive/2011/04/08/2009087.html XmlDatasetConvert.csusing System;usin ...

  5. asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...

  6. ASP.NET中关于XML的AJAX的读取与删除

    一个XML文件,名称就暂定为GroupStudents.xml吧,内容如下: <?xml version="1.0" encoding="utf-8"?& ...

  7. 在 AngularJS 中将 XML 转换为 JSON

    在这篇文章中,我们将谈谈如何在Angular JS中将XML文件转换为JSON.大家都知道Angular JS是开发应用程序的JavaScript框架.所以基本上Angular  JS期望得 到的响应 ...

  8. XML 与 JSON大PK

    导读 XML 和 JSON 是现今互联网中最常用的两种数据交换格式.XML 格式由 W3C 于 1996 年提出.JSON 格式由 Douglas Crockford 于 2002 年提出.虽然这两种 ...

  9. ASP.NET中XML转JSON的方法

    原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...

随机推荐

  1. RabbitMQ学习: 介绍

    1. 介绍 RabbitMQ是一个由erlang开发的基于AMQP(Advanced Message Queue )协议的开源实现.用于在分布式系统中存储转发消息,在易用性.扩展性.高可用性等方面都非 ...

  2. Foundation ----->NSSet

    1.集合类     NSString *s1 = @"zhangsan";     NSString *s2 = @"lisi";     NSString * ...

  3. 父进程等待子进程结束 waitpid wait

    我们一直在强调一个概念就是进程是一个程序执行的实例,是内核在虚拟概念下创建的实体,它实例化的体现在用户态就是程序代码和代码使用的变量(存储空间),在内核态就是内核为我们每个进程所保存的数据结构(状态信 ...

  4. python学习心得第一章

    初始python 1什么是程序 计算机程序是一组执行某种动作的的指令.和那些电路.芯片.显卡.硬盘等不同,它不是计算机本身可以触摸的部分,而是隐藏在背后运行在硬件上面的东西.程序就是一系列告诉没有知觉 ...

  5. try it, then you know . Emacs

     原来Emacs能做时间管理 http://sachachua.com/blog/2012/07/transcript-emacs-chat-john-wiegley/ http://blog.csd ...

  6. CSS中如何让元素隐藏

    在CSS中,让元素隐藏(指屏幕范围内肉眼不可见)的方法很多,有的占据空间,有的不占据空间:有的可以响应点击,有的不能响应点击.下面一个个列出,选一个适合你的 { display: none; /* 不 ...

  7. android超快模拟器Ggenymotion的安装和配置

    原文地址:http://xiaochu.blog.51cto.com/1048262/1639613 Genymotion是一款运行速度快,且易于使用的android模拟器,非常适合与android程 ...

  8. 对于.h文件和.c文件

    C语言中.h文件和.c文件详细解析_云止水_新浪博客http://blog.sina.com.cn/s/blog_73006d600102wcx5.html

  9. Struts2 有关于无法正常的使用通配符

    今天使用struts 2.3.4版本,做了一个通配符的小测试,结果其他的Action都能正常的使用,但是使用通配符的Action不能正常的使用.网上找了很久,最后发现,貌似strust2.3版本以上的 ...

  10. CSS预处理器Sass、LESS 和 Stylus

    CSS 预处理器技术已经非常的成熟,而且也涌现出了越来越多的 CSS 的预处理器框架.本文向你介绍使用最为普遍的三款 CSS 预处理器框架,分别是 Sass.Less CSS.Stylus. 首先我们 ...