ASP.NET XmlDocument类详解_实用技巧

XmlDocument类是.NET框架的DOC解析器。XmlDocument将XML视为树状结构,它装载XML文档,并在内存中构建该文档的树状结构。下面来看下XmlDocument提供了哪些功能。

一、属性:

Attributes      获取一个 XmlAttributeCollection,它包含该节点的属性。 (继承自 XmlNode。)
BaseURI          获取当前节点的基 URI。 (重写 XmlNode..::.BaseURI。)
ChildNodes      获取节点的所有子节点。 (继承自 XmlNode。)
DocumentElement   获取文档的根 XmlElement。
DocumentType    获取包含 DOCTYPE 声明的节点。
FirstChild       获取节点的第一个子级。 (继承自 XmlNode。)
HasChildNodes     获取一个值,该值指示节点是否有任何子节点。 (继承自 XmlNode。)
Implementation     获取当前文档的 XmlImplementation 对象。
InnerText        获取或设置节点及其所有子节点的串联值。 (继承自 XmlNode。)
InnerXml       获取或设置表示当前节点子级的标记。 (重写 XmlNode..::.InnerXml。)
IsReadOnly      获取一个值,该值指示当前节点是否是只读的。 (重写 XmlNode..::.IsReadOnly。)
Item          已重载。
LastChild       获取节点的最后一个子级。 (继承自 XmlNode。)
LocalName       获取节点的本地名称。 (重写 XmlNode..::.LocalName。)
Name         获取节点的限定名。 (重写 XmlNode..::.Name。)
NamespaceURI    获取该节点的命名空间 URI。 (继承自 XmlNode。)
NameTable      获取与此实现关联的 XmlNameTable。
NextSibling       获取紧接在该节点之后的节点。 (继承自 XmlNode。)
NodeType       获取当前节点的类型。 (重写 XmlNode..::.NodeType。)
OuterXml        获取表示此节点及其所有子节点的标记。 (继承自 XmlNode。)
OwnerDocument   获取当前节点所属的 XmlDocument。 (重写 XmlNode..::.OwnerDocument。)
ParentNode       已重载。
Prefix          获取或设置该节点的命名空间前缀。 (继承自 XmlNode。)
PreserveWhitespace  获取或设置一个值,该值指示是否在元素内容中保留空白。
PreviousSibling    获取紧接在该节点之前的节点。 (继承自 XmlNode。)
SchemaInfo      返回节点的后架构验证信息集 (PSVI)。 (重写 XmlNode..::.SchemaInfo。)
Schemas       获取或设置与此 XmlDocument 关联的 XmlSchemaSet 对象。
Value         获取或设置节点的值。 (继承自 XmlNode。)
XmlResolver      设置 XmlResolver 以用于解析外部资源。

二、方法

AppendChild              将指定的节点添加到该节点的子节点列表的末尾。 (继承自 XmlNode。)
Clone                   创建此节点的一个副本。 (继承自 XmlNode。)
CloneNode               创建此节点的一个副本。 (重写 XmlNode..::.CloneNode(Boolean)。)
CreateAttribute            已重载。 创建具有指定名称的 XmlAttribute。
CreateCDataSection         创建包含指定数据的 XmlCDataSection。
CreateComment           创建包含指定数据的 XmlComment。
CreateDefaultAttribute         创建具有指定前缀、本地名称和命名空间 URI 的默认属性。
CreateDocumentFragment        创建 XmlDocumentFragment。
CreateDocumentType          返回新的 XmlDocumentType 对象。
CreateElement             已重载。 创建 XmlElement。
CreateEntityReference          创建具有指定名称的 XmlEntityReference。
CreateNavigator            已重载。 创建一个用于导航此文档的新 XPathNavigator 对象。
CreateNode              已重载。 创建 XmlNode。
CreateProcessingInstruction     创建一个具有指定名称和数据的 XmlProcessingInstruction。
CreateSignificantWhitespace     创建一个 XmlSignificantWhitespace 节点。
CreateTextNode           创建具有指定文本的 XmlText。
CreateWhitespace          创建一个 XmlWhitespace 节点。
CreateXmlDeclaration         创建一个具有指定值的 XmlDeclaration 节点。
GetElementById           获取具有指定 ID 的 XmlElement。
GetElementsByTagName        已重载。 返回一个 XmlNodeList,它包含与指定名称匹配的所有子代元素的列表。
GetEnumerator            提供对 XmlNode 中节点上“for each”样式迭代的支持。 (继承自 XmlNode。)
GetHashCode              用作特定类型的哈希函数。 (继承自 Object。)
GetNamespaceOfPrefix         查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI。 (继承自 XmlNode。)
GetPrefixOfNamespace         查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀。 (继承自 XmlNode。)
ImportNode             将节点从另一个文档导入到当前文档。
InsertAfter               将指定的节点紧接着插入指定的引用节点之后。 (继承自 XmlNode。)
InsertBefore             将指定的节点紧接着插入指定的引用节点之前。 (继承自 XmlNode。)
Load                  已重载。 从 Stream、URL、TextReader 或 XmlReader 加载指定的 XML 数据。
LoadXml                从指定的字符串加载 XML 文档。
Normalize              将此 XmlNode 下子树完全深度中的所有 XmlText 节点都转换成“正常”形式,在这种形式中只有标记(即标记、注释、处理指令、                    CDATA 节和实体引用)分隔 XmlText 节点,也就是说,没有相邻的 XmlText 节点。 (继承自 XmlNode。)
PrependChild             将指定的节点添加到该节点的子节点列表的开头。 (继承自 XmlNode。)
ReadNode               根据 XmlReader 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上。
RemoveAll               移除当前节点的所有子节点和/或属性。 (继承自 XmlNode。)
RemoveChild             移除指定的子节点。 (继承自 XmlNode。)
ReplaceChild             用 newChild 节点替换子节点 oldChild。 (继承自 XmlNode。)
Save                 已重载。 将 XML 文档保存到指定的位置。
SelectNodes              已重载。
SelectSingleNode           已重载。
Supports               测试 DOM 实现是否实现特定的功能。 (继承自 XmlNode。)
Validate               已重载。 验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言 (XSD) 架构。
WriteContentTo           将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中。 (重写 XmlNode..::.WriteContentTo(XmlWriter)。)
WriteTo               将 XmlDocument 节点保存到指定的 XmlWriter。 (重写 XmlNode..::.WriteTo(XmlWriter)。)

 三、事件

NodeChanged        当属于该文档的节点的 Value 已被更改时发生。
NodeChanging       当属于该文档的节点的 Value 将被更改时发生。
NodeInserted         当属于该文档的节点已被插入另一个节点时发生。
NodeInserting        当属于该文档的节点将被插入另一个节点时发生。
NodeRemoved        当属于该文档的节点已被从其父级移除时发生。
NodeRemoving       当属于该文档的节点将被从文档中移除时发生。

助记属性:

PreviousSibling  上一个兄弟节点
NextSibling    下一个兄弟节点
FirstChild     第一个子节点
LastChild     最后一个子节点
ChildNodes    子节点集合
ParentNode     父节点

代码示例:

xml文档:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<Article>
  <author age="30">张三</author>
  <length>12000</length>
  <price>42</price>
</Article>

代码:

复制代码 代码如下:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");
            //先获取一个唯一的Article节点,再获取其下的第一个子节点 然后再获取该节点下的属性集合
            XmlAttributeCollection xc = doc.SelectSingleNode("Article").FirstChild.Attributes;
            string age = xc[0].Value;   //不过是一个定制的集合罢了,还是集合那套东西 //string age = xc["age"].Value; 支持两种索引访问
            Console.WriteLine(age);     //输出30

            string baseuri = doc.SelectSingleNode("Article").FirstChild.BaseURI;   
            Console.WriteLine(baseuri);     //输出 file:///C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml

            XmlNodeList listNode = doc.SelectSingleNode("Article").ChildNodes;  //获取Article节点下的所有节点列表
            for (int i = 0; i < listNode.Count;i++ )    //XmlNodeList不支持foreach遍历,只能用for
            {
                Console.Write(listNode[i].Name + " : " + listNode[i].InnerText);    //输出 author:张三 length:12000 price:30    Name获取的是限定名,也就是标记名称
            }

            XmlElement xe = doc.DocumentElement;    //获取根节点
            Console.WriteLine(xe.Name);     //输出 Article   

            //XmlDocumentType xdt = doc.DocumentType;     //获取包含 DOCTYPE 声明的节点。应该是由DTD限定的节点。
            //Console.Write(xdt.Name);  //此处报 未将对象引用设置到对象的实例,因为找不到有DOCTYPE声明的元素

            Console.WriteLine(doc.HasChildNodes);    //输出 True 当前Document是否包含子节点。

            //XmlImplementation xi = doc.Implementation;    //不懂怎么用
            //xi.ToString();   

            Console.WriteLine(doc.InnerText);   //获取当前文档的内容 输出 张三 12000 30
            Console.WriteLine(doc.InnerXml);    //输出 整个Xml文件的字符串内容
            Console.WriteLine(doc.IsReadOnly);  //获取当前文档是否是只读的。输出 False
            XmlNode node = doc.LastChild;
            Console.WriteLine(node.InnerText);  //输出 张三 12000 30    因为最后一个节点是Article节点,输出Article节点的所有内容
            Console.WriteLine(doc.LocalName);   //输出 #document
            Console.WriteLine(doc.SelectSingleNode("Article").Name);    //输出Article
            Console.WriteLine(doc.SelectSingleNode("Article").FirstChild.NextSibling.Name);     //length author的下一个兄弟节点 是length
            XmlNodeType xnt = doc.SelectSingleNode("Article").NodeType;
            Console.WriteLine(xnt);  //输出Element,表明该节点是元素节点
            string str = doc.SelectSingleNode("Article").OuterXml;  //此节点及其所有自己点标记,输出Article节点的所有内容 <Article>省略...</Article>
            Console.WriteLine(str);
            XmlDocument x = new XmlDocument();
            x.LoadXml(str);

            Console.WriteLine(doc.SelectSingleNode("Article").OwnerDocument);   //获取该节点所属的XmlDocument
            XmlNode xn = doc.SelectSingleNode("Article").LastChild.ParentNode;  //ParentNode获取直接父节点。
            Console.WriteLine(xn.Name); //输出 Article

            Console.WriteLine(doc.PreserveWhitespace);  //是否保留空白    输出False
            XmlNode xn1 = doc.SelectSingleNode("Article").LastChild.PreviousSibling;
            Console.WriteLine(xn1.Name);    //输出length 的确是最后一个节点的前一个节点。

            Console.ReadKey();
        }

    为了更加好的展示一些属性,现在将xml换成这样:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<h:Article xmlns:h = "http://www.xxx.com/">
  <!--默认命名空间-->
  <h:author age="30">张三</h:author>
  <h:length>12000</h:length>
  <h:price>42</h:price>
</h:Article>

代码如下:

复制代码 代码如下:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");
            XmlNamespaceManager xnm = new XmlNamespaceManager(doc.NameTable);
            xnm.AddNamespace("h", "http://www.xxx.com/");
            XmlNode Article = doc.SelectSingleNode("h:Article", xnm);
            string namespace1 = Article.InnerText;
            Console.WriteLine(namespace1);      //输出 张三 12000 30

            Console.WriteLine(Article.Prefix);  //输出 h  获取当前节点的前缀
            Console.WriteLine(Article.NamespaceURI);    //输出 http://www.xxx.com/123  获取当前节点所在的命名空间

            Console.WriteLine(Article.FirstChild.Name + "---" + Article.FirstChild.Value + "---" + Article.FirstChild.LocalName);
            //以上一行代码输出 h:author------author

             //SchemaInfo 返回节点的后架构验证信息集 (PSVI)。//Value 获取或设置节点的值。 (继承自 XmlNode。)
             //XmlResolver 设置 XmlResolver 以用于解析外部资源。 

            Console.ReadKey();
        }

 再来一个展示一下Schemas这个常用的属性

复制代码 代码如下:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();    //创建文档
            doc.Schemas.Add(null, @"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xsd");    //添加一个架构对象到本XmlDocument
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\person.xml");     //加载xml文件
            Console.WriteLine(doc.Schemas.Count);   //输出1 就是第二行添加的那个
            Console.WriteLine(doc.SchemaInfo.MemberType);
            //XmlResolver 设置 XmlResolver 以用于解析外部资源。 

            Console.ReadKey();
        }

下面来试下XmlDocument的方法

Test.xml的代码如下:

复制代码 代码如下:

<?xml version="1.0" encoding="utf-8" ?>
<bookstore>
  <book>
    <id>1</id>
    <title lang="属性1">三国演义</title>
    <author>罗贯中</author>
    <year>2005</year>
    <price id='a1"'>38.5</price>
  </book>
  <book>
    <id>2</id>
    <title lang="属性2">西游记</title>
    <author>吴承恩</author>
    <year>2004</year>
    <price>37.5</price>
  </book>
</bookstore>

主程序代码如下:

复制代码 代码如下:

static void Main(string[] args)
        {
            XmlDocument doc = new XmlDocument();    //创建文档
            doc.Load(@"C:\Users\Administrator\Desktop\ConsoleApplication1\ConsoleApplication1\Test.xml");     //加载xml文件

            XmlNode node1 = doc.CreateNode(XmlNodeType.Element, "pagecount", null);
            node1.InnerText = "222";
            doc.SelectSingleNode("/bookstore").AppendChild(node1); //执行之后 <pagecount>222</pagecount>元素被添加到</bookstore>前面
            doc.Save(@"D:\123.xml");

            XmlNode node2 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").Clone();    //克隆一个节点出来
            Console.WriteLine(node2.InnerText);     //输出三国演义

            XmlNode node3 = doc.SelectSingleNode("/bookstore/book[1]/title[1]").CloneNode(true);   //参数决定是否克隆子节点数(如果false,文本节点也不克隆)
            Console.WriteLine(node3.InnerText);     //输出三国演义

            XmlAttribute attr = doc.CreateAttribute("age");     //创建一个age属性
            attr.Value = "23";
            doc.SelectSingleNode("/bookstore/book[1]/author[1]").Attributes.Append(attr);   //执行之后第一个作者变为 <author age="23">罗贯中</author>
            doc.Save(@"D:\123.xml");

            XmlCDataSection cdata = doc.CreateCDataSection("我&你");
            doc.SelectSingleNode("/bookstore/book[1]/author[1]").AppendChild(cdata);        //执行之后author变为<author age="23">罗贯中<![CDATA[我&你]]></author>
            doc.Save(@"D:\123.xml");

            XmlComment com = doc.CreateComment("2013-2-27 22:37:25");
            doc.SelectSingleNode("/bookstore/book[1]/title[1]").AppendChild(com);   //执行之后title变为<title lang="属性1">三国演义<!--2013-2-27 22:37:25--></title>
            doc.Save(@"D:\123.xml");

            XmlDocument doc1 = new XmlDocument();
            XmlDocumentFragment xdf = doc1.CreateDocumentFragment();    //一个xml片段,这个类敢情好用
            xdf.InnerXml = "<item>widget</item>";
            doc1.AppendChild(xdf);
            Console.WriteLine(doc1.OuterXml);   //输出<item>widget</item>

            //CreateDefaultAttribute         创建具有指定前缀、本地名称和命名空间 URI 的默认属性。
            //CreateDocumentType          返回新的 XmlDocumentType 对象。

            XmlDocument doc2 = new XmlDocument();
            XmlElement element = doc2.CreateElement("title");   //创建一个title 如果现在保存是输出<title/> 因为还没有内容
            doc2.AppendChild(element);
            XmlEntityReference xer = doc2.CreateEntityReference("h");
            doc2.LastChild.AppendChild(xer);
            Console.WriteLine(doc2.OuterXml);   //输出</title>&h;</title>

            XPathNavigator nav = doc2.CreateNavigator();    //一个通过光标的导航模型遍历XML文档的数据

            XmlText text = doc2.CreateTextNode("你好啊");  //创建一个文本节点
            doc2.SelectSingleNode("/title").AppendChild(text);
            Console.WriteLine(doc2.OuterXml);   //输出</title>&h;你好啊</title>

            XmlWhitespace xws = doc2.CreateWhitespace("     ");     //创建一个空白节点
            doc2.SelectSingleNode("/title").AppendChild(xws);
            Console.WriteLine(doc2.OuterXml);   //输出</title>&h;你好啊     </title>

            XmlDeclaration xd = doc2.CreateXmlDeclaration("1.0", "utf-8", "yes");  //xml头  XML声明部分
            XmlNode root = doc2.SelectSingleNode("/title");
            doc2.InsertBefore(xd, root);
            Console.WriteLine(doc2.OuterXml);   //执行之后 在头部加入了<?xml version="1.0" encoding="utf-8" standalont="yes"?>

            XmlSignificantWhitespace xsw = doc2.CreateSignificantWhitespace("      ");
            XmlElement ele = doc2.CreateElement("white");
            ele.InnerText = "空白啊空白";
            ele.AppendChild(xsw);
            doc2.SelectSingleNode("/title").AppendChild(ele);
            Console.WriteLine(doc2.OuterXml);       //还是添加一大堆空白,不知道与CreateWhitespace有什么区别

            XmlDocument doc3 = new XmlDocument();
            String PItext = "type='text/xsl' href='book.xsl'";
            XmlProcessingInstruction newPI = doc3.CreateProcessingInstruction("xml-stylesheet", PItext);
            doc3.AppendChild(newPI);
            Console.WriteLine(doc3.OuterXml);   //输出 <?xml-stylesheet type="text/xsl" hred="book.xsl"?>
            //GetElementById           获取具有指定 ID 的 XmlElement。
            //GetElementsByTagName        已重载。 返回一个 XmlNodeList,它包含与指定名称匹配的所有子代元素的列表。
            //GetEnumerator            提供对 XmlNode 中节点上“for each”样式迭代的支持。 (继承自 XmlNode。)
            //GetNamespaceOfPrefix         查找当前节点范围内离给定的前缀最近的 xmlns 声明,并返回声明中的命名空间 URI。 (继承自 XmlNode。)
            //GetPrefixOfNamespace         查找当前节点范围内离给定的命名空间 URI 最近的 xmlns 声明,并返回声明中定义的前缀。 (继承自 XmlNode。)
            //ImportNode             将节点从另一个文档导入到当前文档。
            //InsertAfter               将指定的节点紧接着插入指定的引用节点之后。 (继承自 XmlNode。)
            //InsertBefore             将指定的节点紧接着插入指定的引用节点之前。 (继承自 XmlNode。)

            //LoadXml                从指定的字符串加载 XML 文档。
            //Normalize              将此 XmlNode 下子树完全深度中的所有 XmlText 节点都转换成“正常”形式,在这种形式中只有标记(即标记、注释、处理指令、                    CDATA 节和实体引用)分隔 XmlText 节点,也就是说,没有相邻的 XmlText 节点。 (继承自 XmlNode。)
            //PrependChild             将指定的节点添加到该节点的子节点列表的开头。 (继承自 XmlNode。)
            //ReadNode               根据 XmlReader 中的信息创建一个 XmlNode 对象。读取器必须定位在节点或属性上。
            //RemoveAll               移除当前节点的所有子节点和/或属性。 (继承自 XmlNode。)
            //RemoveChild             移除指定的子节点。 (继承自 XmlNode。)
            //ReplaceChild             用 newChild 节点替换子节点 oldChild。 (继承自 XmlNode。)

            //Supports               测试 DOM 实现是否实现特定的功能。 (继承自 XmlNode。)
            //Validate               已重载。 验证 XmlDocument 是不是 Schemas 属性中包含的 XML 架构定义语言 (XSD) 架构。
            //WriteContentTo           将 XmlDocument 节点的所有子级保存到指定的 XmlWriter 中。 (重写 XmlNode..::.WriteContentTo(XmlWriter)。)
            //WriteTo               将 XmlDocument 节点保存到指定的 XmlWriter。 (重写 XmlNode..::.WriteTo(XmlWriter)。)
            Console.ReadKey();
        }

时间: 2024-11-01 03:11:37

ASP.NET XmlDocument类详解_实用技巧的相关文章

asp.net FreeTextBox配置详解_实用技巧

如图所示:           这就是我们在网页上编辑文字时经常使用的东西. 用asp.net做网站时经常用到它,下面来讲讲如何在asp.net中添加freetextbox组件. 预备工作:下载freetextbox,可以去官网 http://freetextbox.com 上下载最新版本,也可以去gougou.com上下载个中文版. 压解后的 freetextbox.dll 文件就是我们要用到的. 现在开始配置: 1.打开vs2005,新建网站,在"解决方案"中的项目下点右键,选择&

asp.net运行原理 详解_实用技巧

主要类: System.Web.HttpRuntime System.Web.HttpApplicationFactory System.Web.HttpApplication System.Web.Compilation.BuildManager System.Web.Compilation.ApplicationBuildProvider System.Web.Compilation.BuildProvidersCompiler System.Web.UI.PageHandlerFactor

轻量级asp.net ajax解决方案详解_实用技巧

本文实例讲述了轻量级asp.net ajax解决方案.分享给大家供大家参考,具体如下: 跟shotdog老师研究探讨了下asp.net里,除官方庞大asp.net ajax之外的ajax解决方案.我们想法是以不同的服务器端方式输出,然后在页面使用jQuery的ajax实现调用服务器端几个解决方案: 1.使用一般的webform,在页面用jQuery ajax调用,再从取得的html数据中取得<body>内的内容,写入DOM 优点:不用改变现有的asp.net开发模式,可以使用现成的页面:aja

ASP.NET站点导航应用详解_实用技巧

 导航实际上给访问者提供了一个地图类似的东西,让访问者更快地找到想要的东西. 在2.0中引入了一个很重要的概念,那就是站点地图siteMap这样一个XML文件,但是它后缀不是XML. 若要为站点创建一致的.容易管理的导航解决方案,可以使用asp.net站点导航.asp.net站点导航提供下列功能: 在了解了一些基本知识后,我们来做一个简单的导航的例子. 1.首先创建一个master html代码: <%@ Master Language="C#" AutoEventWireup=

ASP.NET XmlDocument类详解

  这篇文章主要介绍了ASP.NET XmlDocument类详解,本文讲解了XmlDocument的属性.XmlDocument的方法.XmlDocument的事件.XmlDocument的使用实例等内容,需要的朋友可以参考下 XmlDocument类是.NET框架的DOC解析器.XmlDocument将XML视为树状结构,它装载XML文档,并在内存中构建该文档的树状结构.下面来看下XmlDocument提供了哪些功能. 一.属性: Attributes 获取一个 XmlAttributeCo

ASP.NET4 GridView的四种排序样式详解_实用技巧

与ASP.NET 的其他Web控件一能够,Gridview控件拥有很多不同的CSS样式属性设置,包括象CssClass,Font字体,ForeColor,BackColor,BackColor, Width, Height等等.Gridview还包括了一些应用在表格的行上的样式属性,比如RowStyle, AlternatingRowStyle, HeaderStyle,和PagerStyle,它们都提供了象CssClass和Font这些基本的属性设置.  在 ASP.NET 4.0中的Grid

ASP.NET MVC中使用jQuery时的浏览器缓存问题详解_实用技巧

介绍 尽管jQuery在浏览器ajax调用的时候对缓存提供了很好的支持,还是有必要了解一下如何高效地使用http协议. 首先要做的事情是在服务器端支持HTTP GET,定义不同的URL输出不同的数据(MVC里对应的就是action).如果要使用同一个地址获取不同的数据,那就不对了,一个HTTP POST也不行因为POST不能被缓存.许多开发人员使用POST主要有2个原因:明确了数据不能被缓存,或者是避免JSON攻击(JSON返回数组的时候可以被入侵). 缓存解释 jQuery全局对象里的ajax

.Net中的序列化和反序列化详解_实用技巧

序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈谈我对序列化和反序列化的一些理解. 一.什么序列化和反序列化序列化通俗地讲就是将一个对象转换成一个字节流的过程,这样就可以轻松保存在磁盘文件或数据库中.反序列化是序列化的逆过程,就是将一个字节流转换回原来的对象的过程. 然而为什么需要序列化和反序列化这样的机制呢?这个问题也就涉及到序列化和反序列化的用途了, 对于序列化的主要

RabbitMQ .NET消息队列使用详解_实用技巧

本文实例为大家分享了RabbitMQ .NET消息队列使用方法,供大家参考,具体内容如下 首先下载安装包,我都环境是win7 64位: 去官网下载 otp_win64_19.0.exe  和rabbitmq-server-3.6.3.exe安装好 然后开始编程了: (1)创建生产者类: class Program { private static void Main() { //建立RabbitMQ连接和通道 var connectionFactory = new ConnectionFacto