欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

在.NET Framework中轻松处理XML数据(4-3)

程序员文章站 2022-03-10 12:23:36
...
??图八中代码演示了把一个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();



}

}


以上就是在.NET Framework中轻松处理XML数据(4-3) 的内容,更多相关内容请关注PHP中文网(www.php.cn)!