ASP.NET中的XML和JSON
一、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的更多相关文章
- XPath在asp.net中查询XML -摘自网络
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- Rest中的XML与JSON的序列化与反序列化
#region 获取XML的序列化和反序列化 /// <summary> /// 对象进行序列化生成XML /// </summary> /// <typeparam n ...
- XPath在asp.net中查询XML
.NET Framework 2.0中可以使用System.Xml.XPath命名空间下的类对XML文档进行基于路径的查询,在查询过程中需要构造类似SQL的查询字符串,该字符串遵循XPath语法.它由 ...
- ASP.NET中把xml转为dataset与xml字符串转为dataset及dataset转为xml的代码
转自:http://www.cnblogs.com/_zjl/archive/2011/04/08/2009087.html XmlDatasetConvert.csusing System;usin ...
- asp.net中利用Jquery+Ajax+Json实现无刷新分页(二)
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="PageTest.aspx.cs ...
- ASP.NET中关于XML的AJAX的读取与删除
一个XML文件,名称就暂定为GroupStudents.xml吧,内容如下: <?xml version="1.0" encoding="utf-8"?& ...
- 在 AngularJS 中将 XML 转换为 JSON
在这篇文章中,我们将谈谈如何在Angular JS中将XML文件转换为JSON.大家都知道Angular JS是开发应用程序的JavaScript框架.所以基本上Angular JS期望得 到的响应 ...
- XML 与 JSON大PK
导读 XML 和 JSON 是现今互联网中最常用的两种数据交换格式.XML 格式由 W3C 于 1996 年提出.JSON 格式由 Douglas Crockford 于 2002 年提出.虽然这两种 ...
- ASP.NET中XML转JSON的方法
原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. X ...
随机推荐
- 深入理解JS异步编程五(脚本异步加载)
异步脚本加载 阻塞性脚本 JavaScript在浏览器中被解析和执行时具有阻塞的特性,也就是说,当JavaScript代码执行时,页面的解析.渲染以及其他资源的下载都要停下来等待脚本执行完毕 浏览器是 ...
- htnl5中设置文本单行显示,超出部分打省略号,鼠标移到文本时alt出全部文本内容
Html代码: 1.<span class="my-span" title="无数无数无数无数无数">机构</span> Css样式: ...
- 前端mac下的工具
1.制作base64图片的 DataURLMaker imageAlpha 减少png图片尺寸 2.共享iphone X-Mirage 3.制作交互图 briefs 4.制作矢量图 sketch
- 一个Tomcat多端口多项目部署
为什么突然写这个呢,前两天面试了,被面试官给问住了,回来一查.....怎么这么简单,当时我就....你懂得. 我用的是Tomcat7,用Eclipse新建了两个简单的web项目,贴出web1的截图,w ...
- ReaderWriterLock的UpgradeToWriterLock方法的一种使用场景
ReaderWriterLock对比互斥锁(lock)的优势是,读锁和写锁的分离,读锁之间互不排斥. 当然,本文重点不是讲ReaderWriterLock本身,而是讲它的UpgradeToWriter ...
- ORA-01033: ORACLE 正在初始化或关闭 进程 ID: 0 会话 ID: 0 序列号: 0
用了很长时间的数据库,一直都挺好,今天早上一来报这个错,开始追究原因. 1.用SYS用户登录: 2.将数据库修改为打开状态,alter database open,出现如下的错误提示: ORA-160 ...
- MySQL常见错误及其解决办法
1.连接类 (1).问题:MySQL server has gone away 解决办法:出现该报错常见的原因是服务器超时了并且关闭了连接.缺省地,如果没有事情发生,服务器在 8个小时后关闭连接.如 ...
- Finish 和 Complete 的区别
2012年,在伦敦举行的语言大赛中,圭亚那选手Samsunder Balgobin 在回答比赛中最后一道问题 "你如何用一种容易让人理解的方式解释 complete与finished 的区別"时, ...
- U-boot中的FDT
1. U-boot为了支持FDT,添加了新的代码:/libfdt目录fdt.h libfdt.h fdt_support.h fdt_support.c 2. http://blog.csdn.net ...
- [VM workstation]VM workstation 中的虚拟机连不上网络
之前一直没有想到虚拟机连不上网络是VM workstationg 自身的原因. 突然在进入虚拟机时看见提示:VM 桥接网桥无法正常工作 于是便进入 编辑→虚拟网络编辑器 中将虚拟网卡都重置了一下就可以 ...