牐犕及酥写码演示了把一个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(); } } (责任编辑:admin) |