转载:.NET Framework轻松处理XML数据(6)

开发者福利!热门AI工具限时免费用 购周边即赠Coding Plan Lite,Claude Code、Cursor等20+工具畅享,效率翻倍! 阅读详情
 转载   www.ASPCool.com
读写流
  
    有趣的是,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类型的数据。
  
    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
《阵列信号处理及MATLAB实现》阵列响应矩阵(均匀线阵、均匀圆阵、L型阵列、平面阵列和任意阵列) 《阵列信号处理及MATLAB实现》内容总结,如需阅读更详细内容请购买正版书籍。 阅读详情

相关推荐

13、数据可视化与分组操作:Danfo.js 实战指南

本文深入介绍了如何使用 Danfo.js 进行数据可视化与分组操作。内容涵盖多种图表的创建与配置,如折线图、散点图、箱线图、小提琴图、直方图和柱状图,并结合 Plotly.js 实现丰富的交互式可视化效果。同时,详细讲解了数据聚合的‘分割-应用-组合’模式,包括分组数据、遍历分组、apply 方法及 agg 聚合操作,帮助开发者高效处理和分析结构化数据。适用于 Dnotebook、HTML 及主流前端框架的应用场景。

o1p2q3r的博客 82

[原创]再提.NET使用自定义XML做参数配置文件

WEB开发,尤其是大型项目的开发,其中不乏大名鼎鼎的CMS,XXMS,呵呵. 他们都有个共同的特点,那就是网站配置参数N多. 怎么设置好众多的参数配置,是在项目初期需要规划的一个重点. 总结这几年做WEB开发的一点点积累.个人认为以下方案是比较合理化的,对于以后参数的增加修改带来的一些问题可以得到一定的控制.同样适合WINFORM哈. 运行环境: .NET 2.0 在项目设计过程中,...

weixin_30457551的博客 178

在ABAQUS中使用VUMAT子程序实现Hashin失效准则的详细解析与实践:深入探讨复合材料模拟仿真的高级编程技巧

Hashin失效准则是由材料科学家Shlomo Hashin于1962年提出的一种基于能量方法的多向失效理论,主要用于预测复合材料的破坏行为。与传统的单向失效理论不同,Hashin准则考虑了材料内部的多种独立破坏机制,如基体断裂、界面脱粘、纤维断裂等,这些机制在不同应力状态下可能同时或分别发生。通过计算各个机制的能量释放率,Hashin失效准则能够更为准确地预测复合材料在复杂应力状态下的破坏行为。

qq_38334677的博客 1910

.NETXML 数据解析的总结(1)

一些XML API 常用方法: XML文档示例: <user> <person name="fengyun" sex="man" age="23"> <pass> hutong </pass> <Address> yunn...

weixin_43835284的博客 648

C# XML文件操作

public static bool SaveToXML(string strPathXML, object sourceObj, Type type) { if (!System.IO.Directory.Exists(System.IO.Path.GetDirectoryName(strPathXML)))//判断是否存在,不存在就创建 { try { ...

Zeroforst的博客 685

转载.NET Framework轻松处理XML数据()

 转载自:http://www.admin5.com/html/edu/Pro/xml/20061226/32120.htmlXmlTextWriter类    用在本节中的方法创建XML文档显然并不困难。多年以来,开发者都是通过在缓存在连接一些字符串,连接好以后再把缓存中字符串输出到文件的方式来创建 XML文档。但是以这种方式创建XML文档的方法只有在你保证字符串中不存在任何细小的错误的时候才有

prophet08的专栏 497

转载.NET Framework轻松处理XML数据()

 在. NET Framework中,XmlTextReader和XmlTextWriter类提供了对xml数据的读和写操作。在本文中,作者讲述了XML 阅读器(Reader)的体系结构及它们怎样与XMLDOM 和SAX 解释器结合。作者也演示了怎么样运用阅读器分析和验证XML文档,怎么样创建格式 良好的XML文档,以及怎么样用函数读/写基于Base64和BinHex编码的大型的XML文档。最后,

prophet08的专栏 531

转载.NET Framework轻松处理XML数据()

转载:http://www.admin5.com/html/edu/Pro/xml/20061226/32118.html分析属性值   大部分情况下,属性值都是一个简单的文本字符串。然而,这并不意味着实际应用中的属性值都是字符型的。有时候,属性值是由 许多种类型的数据组合而成的,例如Date或Boolean,这时,你就要用XmlConvert或System.Convevt类的方法把这些

prophet08的专栏 599

转载.NET Framework轻松处理XML数据(5)

 转载   www.ASPCool.comXMLTextWriter类     用在本节中的方法创建XML文档显然并不困难。多年以来,开发者都是通过在缓存在连接一些字符串,连接好以后再把缓存中字符串输出到文件 的方式来创建XML文档。但是以这种方式创建XML文档的方法只有在你保证字符串中不存在任何细小的错误的时候才有效。.net Framework通过用XMLwriter提供了更好的创建XML

prophet08的专栏 627

php .net2 .net4,在.NET Framework轻松处理XML数据(4-2)

Figure 7 States for XML WriterStateDescriptionAttributeThe writer enters this state when an attribute is being writtenClosedThe Close method has been called and the writer is no longer available for w...

weixin_35201342的博客 126

转载.NET Framework轻松处理XML数据(7)

转载   www.ASPCool.com设计XMLReadWriter类     如前面所说,XML reader和Writer是各自独立工作的:reader只读,writer只写。假设你的应用程序要管理冗长的XML文档,且该文档有不确定的数据。 Reader提供了一个很好的方法去读该文档的内容。另一方面,Writer是一个非常有用的用于创建XML文档片断工具,但是如果你想要它即能读,又能 写,

prophet08的专栏 622

转载.NET Framework轻松处理XML数据()

转载自:http://www.admin5.com/html/edu/Pro/xml/20061226/32119.html带验证的阅读器    XmlValidatingReader类实现了XmlReader类,它提供了支持多种类型的XML验证:DTD,XML-Data Reduced (XDR)架构,以及XSD,DTD和XSD都是W3C官方推荐的。而XDR是Microsoft早期用于处理XML

prophet08的专栏 582

.NET Framework轻松处理XML数据

http://topic.csdn.net/t/20030523/16/1825086.html http://www.sosuo8.com/article/show.asp?id=1305 http://www.cnblogs.com/angelfeather/articles/767415.html 转载:https://www.cnblogs.com/29...

weixin_30877227的博客 118

.Net Framework

.Net Framework 提供了一整套应用程序的开发平台,它实际上是有一大堆的技术组合而成,这些技术彼此协作,能为开发人员提供无限的运用。 .Net Framework 由以下几部分组成: .Net语言包:包括Visual Basic.NET,C#,J#和c++等; 通用语言运行时(CLR:Common Language Runtime):提供所有.Net 程序的...

weixin_33698823的博客 109

【新品上架】数据分析工具FastCube.Net暖春来袭,使您轻松分析数据并构建汇总表...

FastCube.Net——一种有效的数据分析工具 FastCube使您能够分析数据并构建汇总表(数据切片),以及轻松,即时地创建各种报表和图表。它是高效分析数据阵列的便利工具。 立即下载最新试用版>> FastCube是一组OLAP桌面组件。 它支持 .Net Framework 4.与FastCube 2 VCL兼容。 FastCube组件可以内置到主...

301

浅谈对象的序列化(Serialize)

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。 .NET Framework 提供两种序列化技术: 二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等。远...

weixin_30871701的博客 282

php service原理,轻松搞懂WebService工作原理

用更简单的方式给大家谈谈WebService,让你更快更容易理解,希望对初学者有所帮助。WebService是基于网络的、分布式的模块化组件。我们直接来看WebService的一个简易工作流程:客户端 ——>阅读WSDL文档(了解webservice的请求) ——> 调用WebService上面的流程是一个大致的描述,客户端阅读WSDL文档发送请求,然后调用Web服务器最后返回给客户端...

weixin_42520025的博客 133

图形图像处理CAD控件Vectordraw Developer Framework下载

下载该控件请到cad控件网www.cadkong.com VectorDraw Developer Framework (VDF)为您的应用程序增加动态的2D/3D图形。是一个可轻松创建爱你和管理及打印2D和3D图形的构件。 其对象可显示与大多数公共矢量格式和其他CAD对象兼容的方法和属性。 支持10多种矢量格式和多种离散格式。VectorDraw Developer Framework (...

weixin_30835923的博客 206

谈谈:.Net中的序列化和反序列化

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

weixin_30826761的博客 73

对话Spring.net

Spring.NET可以应用于许多场景。核心特性如依赖注入(DI)容器、AOP以及数据访问框架,都可以非常好地应用在任意的.NET应用程序中。它使得你能够创建更简单、更干净的应用程序。为了尽量消除它所带来的副作用,开发人员还可以免费获得功能强大的配置机制。 如果你正在编写一个ASP.NET Web应用程序,你可以考虑将Spring.NET Web框架(Spring.Web)加入其中。因为它是AS...

weixin_30586085的博客 107

.NetFramework 数据保存与传输之序列化对象

序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,就使得数据能够被轻松地存储和传输。 .NET Framework 提供两种序列化技术: 二进制序列化保持类型保真度,这对于在应用程序的不同调用之间保留对象的状态很有用。例如,通过将对象序列化到剪贴板,可在不同的应用程序之间共享对象。您可以将对象序列化到流、磁盘、内存和网络等等...

weixin_33778778的博客 136

序列化

序列化 (serialization)   将对象的状态信息转换为可以存储或传输的窗体的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。   序列化使其他代码可以查看或修改那些不序列化便无法访问的对象实例数据。确切地说,代码执行序列化需要特殊的权限:即指定了 SerializationFormatter 标志的 ...

weixin_30488085的博客 56
上一篇: 转载:.NET Framework轻松处理XML数据(5)
下一篇: 转载:.NET Framework轻松处理XML数据(7)
prophet08
博客等级 码龄19年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值