??图八中代码演示了把一个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) 的内容,更多相关内容请关注Work网(www.php.cn)!


09-15 19:21