仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 635|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET编程:在Visual C#中利用XML之编写XML

[复制链接]
萌萌妈妈 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:43:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
c语言的编译器,几乎是所有新平台都有的。因此从这点上看,c语言的程序,比其他任何语言更加容易跨平台。visual|xml  在我的上一篇文章《C#中利用XML――读取XML》中和人人会商了怎样利用.NETFramework中供应的类在C#中读取XML和读取的一些相干观点,那末明天就说一说怎样在C#中编写XML文档,后来我以为用编程的体例往编写XML几乎就是自讨苦吃,厥后想一想仍是以为挺有效的,我想Microsoft那班家伙能编出这些类来应当不是仅仅为了向比尔i盖茨交差吧!至于它的用途嘛……好比说做安装程序啊!我们能够依据在安装过程当中用户所选的选项和一些设置来天生响应的XML文档再依据XML文档来初始化我们的使用程序。朴陋的话不说那末多了,上面我们来懂得一下详细的完成细节。

  要编写XML一样是接纳流的观点,在.NET中编写XML的细节是作为XmlWriter类来完成的,但该类是笼统类不克不及够实例化,为此,我们要想在程序中会见它的办法以完成编写XML的希望,必须利用它的派生类XmlTextWriter,该类供应了一系列的属性和办法为我们编写XML做筹办,上面将具体的先容这个类:

  机关函数:

publicXmlTextWriter(TextWriter);
publicXmlTextWriter(Stream,Encoding);
publicXmlTextWriter(string,Encoding);
  第一个机关函数是把现有的TextWriter实例传送已往,System.IO.TextWriter类是一个有序的字符流

  第二个机关函数是把要写进的流作为第一个参数,第二个参数是指定XML文档的编码体例,默许是UTF8,可取Encoding的列举值,流能够是FileStream,MemoryStream,NetworkStream等等

  第三个机关函数是把但愿写进的文件名看成一个字符串(假如存在,就重写该文件)传送给第一个参数,第二个参数指定编码体例

  经常使用的办法:

  WriterStartDocument()和WriterEndDocument()办法:

  第一个办法用来编写XML声明部分,如:<?xmlversion=”1.0”encoding=”UTF-8”?>

  第二个办法用来封闭任何翻开的元素或属性并将编写重视新设置为Start形态。

  WriterStartElement()和WriteEndElement()办法:

  第一个办法用来写出指定的入手下手标志,该办法有以下几个重载:

WriterStartElement(stringlocalname)
  利用传送的字符串作为元素的当地称号

WriterStartElement(stringlocalname,stringnamespace)
  第一个参数指定元素的当地称号,第二个参数指定元素地点的定名空间

WriterStartElement(stringprefix,stringlocalname,stringnamespace)
  第一个参数指定元素的前缀,第二个参数指定元素的当地称号,第三个参数指定元素地点的定名空间

  第二个办法用来写出与入手下手元素对应的封闭元素,假如入手下手元素不包括任何内容,将用一个”/>”做为封闭元素

  WriterStartAttribute()和WriterEndAttribute()办法:

  第一个办法用于编写一个属性的开首,该办法有两个重载:

WriterStartAttribute(stringlocalname,stringnamespace)
  第一个参数指定属性的当地称号,第二个参数指定属性地点的定名空间

WriterStartAttribute(stringprefix,stringlocalname,stringnamespace)
  第一个参数指定属性的前缀,第二个参数指定属性的当地称号,第三个参数指定属性地点的定名空间

  第二个办法用于封闭WriterStartAttribute创立的属性

  WriterElementString()办法:

  该办法能够创立一个包括字符串值的元素,它有以下重载:

WriterElementString(stringlocalname,stringvalue)
  假如编写如许的代码:WriterElementString(“para”,”Sometext”)将输入:<para>Sometext</para>

WriterElementString(stringlocalname,stringnamespace,stringvalue)
  假如编写如许的代码:WriterElementString(“para”,”http://www.w3.org/ns”,”Sometext”)将输入:<paraxmlns=”http://www.w3.org/ns”>Sometext</para>

  假如编写嵌套几级的元素可以使用WriterStartElement()和WriterEndElement()办法,假如编写间接包括内容的元素可使用该办法

  WriterAttributeString()办法:

  相似与WriterElementString()办法,在利用上假如属性的值傍边不包括实体可间接利用该办法来写出属性,假如属性值包括实体可以使用WriterStartAttribute()和WriterEndAttribute()办法,比方要写出如许的XML――<paraauthor=”Do&0241;a&L.Perez”/>,可编写以下代码:

WriterStartElement(“para”);
WriterStartAttribute(“author”,null);
WriterString(“Do”);
WriterCharEntiry(“~n”);
WriterString(“a”);
WriterCharEntiry(“&”);
WriterString(“L.Perez”);
WriterEndAttribute();
WriterEndElement();
  该办法有以下重载:

WriterAttributeString(stringlocalname,stringvalue);
WriterAttributeString(stringlocalname,stringnamespace,stringvalue);
WriterAttributeString(stringprefx,stringlocalname,stringnamespace,stringvalue);
  WriterNode(XmlReaderreader,booldefattr)办法:

  该办法能够从XmlReader读取器中复制节点并把它们写进XmlWriter流中,第一个参数是XmlReader的实例,第二个参数承受一个布尔值,决意是不是复制元素中的属性,思索上面XML片断:

<para>
<sent>
The<b>XmlWriter</b>classwritesXMLcontenttoaStream.
</sent>
</para>
  以下代码复制个中的片断,reader代表XmlReader的实例writer代表XmlWriter类的实例:

while(reader.Read())
{
 if(reader.Name==”sent”&&reader.NodeType==XmlNodeType.Element)
 {
  writer.WriterNode(reader,true);
 }
}
  失掉以下输入:

<sent>

The<b>XmlWriter</b>classwritesXMLcontenttoaStream.

</sent>  WriterComment(stringtext)办法:用于写出正文

  WriterString(stringtext)办法:用于写出文本

  WriterCData(stringtext)办法:写出CDATA数据块

  WriterBase64(byte[]buffer,intindex,intcount)办法:将指定的二进制字节编码为Base64并写出了局文本

  Flush():将缓冲区中的一切内容革新到基本流,并同时革新基本流Close():封闭此流和基本流

  以上对XmlTextWriter类的一些主要办法做了复杂先容,上面我们就来看一个例程,看看在程序中怎样利用这些办法。

  Example1按纽将向一个文件写出XML声明和一个元素节点和节点内的文本,Example2按纽将在Example1的基本上增加属性节点,嵌套元素和文本,WriteNode按纽利用WriterNode()办法在现有读取器中复制该读取器中的一切元素及属性并写到一个新的XML文档中,Example3按纽将写一份完全的XML文档,Example4按纽在Example3按纽的基本上别的天生一份文档并向该文档中追加CDATA部分,Example5按纽将利用WriterBase64()办法对一幅图片举行编码并将编码后的数据写到XML文档中,Example6按纽将利用Example5按纽中天生的XML读取个中数据并对个中编码数据举行解码最初天生一张图片。

  以下是功效完成代码:
  以下是在WriteNode按纽中要利用到的XML文件:

  唐诗.xml
<?xmlversion="1.0"encoding="gb2312"?>
<唐诗>
 <五言尽句>
  <作者字号="太白">李白</作者>
  <题目>静夜思</题目>
  <内容>床前明月光,疑是地上霜。举头看明月,垂头思家乡。</内容>
 </五言尽句>
 <五言尽句>
  <作者字号="太白">李太白</作者>
  <题目>春晓</题目>
  <内容>春眠不觉晓,到处闻啼鸟。夜来风雨声,花落知几。</内容>
 </五言尽句>
 <五言尽句>
  <作者字号="季凌">王之涣</作者>
  <题目>登鹤雀楼</题目>
  <内容>白天依山尽,黄河进海流。欲穷千里目,更上一层楼</内容>
 </五言尽句>
 <五言尽句>
  <作者>李清照</作者>
  <题目>如梦令</题目>
  <内容>昨夜风疏雨骤,浓睡不用残酒,试问卷帘人,却道海棠仍旧,知否,知否,应是绿肥红瘦。</内容>
 </五言尽句>
</唐诗>前天傍晚我发表了《Java的跨平台就是一句谎言。》,原本就是周末闲来无事,发表一篇略带争议性的博文让大家都来吵吵架,发表自己的看法,根本就没想着谁把谁打倒,一个行业或者是技术阵营是无法用短期口水仗打到对手的。
山那边是海 该用户已被删除
沙发
发表于 2015-1-18 13:35:10 | 只看该作者
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
再现理想 该用户已被删除
板凳
发表于 2015-1-22 05:52:46 | 只看该作者
通过这次激烈的讨论,我从大家身上学到了太多,开阔了眼界,不管是支持我的还是骂我的,都感谢你们。
柔情似水 该用户已被删除
地板
发表于 2015-1-30 23:18:21 | 只看该作者
平台无关性是PHP的最大优点,但是在优点的背后,还是有一些小小的缺点的。如果在PHP中不使用ODBC,而用其自带的数据库函数(这样的效率要比使用ODBC高)来连接数据库的话,使用不同的数据库,PHP的函数名不能统一。这样,使得程序的移植变得有些麻烦。不过,作为目前应用最为广泛的一种后台语言,PHP的优点还是异常明显的。
小魔女 该用户已被删除
5#
发表于 2015-2-6 16:44:46 | 只看该作者
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?
飘飘悠悠 该用户已被删除
6#
发表于 2015-2-17 09:22:29 | 只看该作者
ASP.NET:ASP.net是Microsoft.net的一部分,作为战略产品,不仅仅是ActiveServerPage(ASP)的下一个版本;它还提供了一个统一的Web开发模型,其中包括开发人员生成企业级Web应用程序所需的各种服务。ASP.NET的语法在很大程度上与ASP兼容,同时它还提供一种新的编程模型和结构,可生成伸缩性和稳定性更好的应用程序,并提供更好的安全保护。
乐观 该用户已被删除
7#
发表于 2015-3-5 18:52:56 | 只看该作者
我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。
深爱那片海 该用户已被删除
8#
发表于 2015-3-12 11:32:31 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
海妖 该用户已被删除
9#
发表于 2015-3-19 21:27:53 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 07:07

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表