转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> Web开发 >> 正文
.NETFramework轻松处理XML数据(6)         ★★★★

.NETFramework轻松处理XML数据(6)

作者:闵涛 文章来源:闵涛的学习笔记 点击数:945 更新时间:2009/4/23 11:18:22
     读写流
  
  有趣的是,reader(阅读器)和writer类提供了基于Base64 和BinHex编码的读写数据流的方法。WriteBase64 和 WriteBinHex方法的功能与其它的写方法的功能存在着细微的差别。它们都是基于流的,这两个方法的功能像一个byte数组而不是一个string。下面的代码首先把一个string转换成一个byte数组,然后把它们写成一个Base64 编码流。Encoding类的GetBytes静态方法完成转换的任务:
  
  writer.WriteBase64(
  
  Encoding.Unicode.GetBytes(buf),
  
  0, buf.Length*2);
  图八中代码演示了把一个string数据转换为Base64 编码的XML流。图九是输出的结果。
  
  
  Figure 8 Persisting a String Array as Base64
  
  using System;
  
  using System.Text;
  
  using System.IO;
  
  using System.Xml;
  
  
  
  class MyBase64Array
  
  {
  
  public static void Main(String[] args)
  
  {
  
  string outputFileName = "test64.xml";
  
  if (args.Length > 0)
  
  outputFileName = args[0]; // file name
  
  
  
  // 把数组转换成XML
  
  String[] theArray = {"Rome", "New York", "Sydney", "Stockholm",
  
  "Paris"};
  
  
  
  CreateOutput(theArray, outputFileName);
  
  return;
  
  }
  
  
  
  private static void CreateOutput(string[] theArray, string filename)
  
  {
  
  // 打开XML writer
  
  XmlTextWriter xmlw = new XmlTextWriter(filename, null);
  
  //使子元素根据 Indentation 和 IndentChar 设置缩进。此选项只对元素内容进行缩进
  
  xmlw.Formatting = Formatting.Indented;
  
  //书写版本为“1.0”的 XML 声明
  
  xmlw.WriteStartDocument();
  
  //写出包含指定文本的注释 。
  
  xmlw.WriteComment("Array to Base64 XML");
  
  //开始写出array节点
  
  xmlw.WriteStartElement("array");
  
  //写出具有指定的前缀、本地名称、命名空间 URI 和值的属性
  
  xmlw.WriteAttributeString("xmlns", "x", null, "dinoe:msdn-mag");
  
  // 循环的写入array的子节点
  
  foreach(string s in theArray)
  
  {
  
  //写出指定的开始标记并将其与给定的命名空间和前缀关联起来
  
  xmlw.WriteStartElement("x", "element", null);
  
  //把S转换成byte[]数组, 并把byte[]数组编码为 Base64 并写出结果文本,要写入的字节数为s总长度的2倍,一个string占的字节数是2字节。
  
  xmlw.WriteBase64(Encoding.Unicode.GetBytes(s), 0, s.Length*2);
  
  //关闭子节点
  
  xmlw.WriteEndElement();
  
  }
  
  //关闭根节点,只有两级
  
  xmlw.WriteEndDocument();
  
  
  
  // 关闭writer
  
  xmlw.Close();
  
  
  
  // 读出写入的内容
  
  XmlTextReader reader = new XmlTextReader(filname);
  
  while(reader.Read())
  
  {
  
  //获取节点名为element的节点
  
  if (reader.LocalName == "element")
  
  {
  
  
  
  byte[] bytes = new byte[1000];
  
  int n = reader.ReadBase64(bytes, 0, 1000);
  
  string buf = Encoding.Unicode.GetString(bytes);
  
  
  
  Console.WriteLine(buf.Substring(0,n));
  
  }
  
  }
  
  reader.Close();
  
  
  
  }
  
  }
  Figure 9 String Array in Internet Explorer
  
  Reader类有专门的解释Base64和BinHex编码流的方法。下面的代码片断演示了怎么样用XmlTextReader类的ReadBase64方法解析用Base64和BinHex编码集创建的文档。
  
  XmlTextReader reader = new XmlTextReader(filename);
  
  while(reader.Read()) {
  
  if (reader.LocalName == "element") {
  
  byte[] bytes = new byte[1000];
  
  int n = reader.ReadBase64(bytes, 0, 1000);
  
  string buf = Encoding.Unicode.GetString(bytes);
  
  Console.WriteLine(buf.Substring(0,n));
  
  }
  
  }
  
  reader.Close();
  
  从byte型转换成string型是通过Encoding类的GetString方法实现的。尽管我只介绍了基于Base64编码集的代码,但是可以简单的用BinHex替换方法名就可以实现读基于BinHex编码的节点内容(用ReadBinHex方法)。这个技巧也可以用于读任何用byte数据形式表示的二进制数据,尤其是image类型的数据。
  
    


[Web开发]XML与HTML在语法上的主要区别详解  [系统软件]如何让Expat支持中文XML
[VB.NET程序]vb.net 与 XML 的操作  [VB.NET程序]vb.net读写xml(2)--实现datagrid与xml的沟通(原创…
[VB.NET程序]vb.net 读写xml方法(1)  [VB.NET程序][VB.NET+XML]完成简单程序配置
[VB.NET程序]使用Visual Basic操纵XML文档  [VB.NET程序]XML 简单接口 (SAX2)用Visual Basic 实现的示例
[Delphi程序]Delphi 6 XML映象工具  [Delphi程序]Delphi 6 XML数据绑定
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台