??圖八中代碼示範了把一個string資料轉換為Base 64 編碼的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) 的內容,更多相關內容請關注topic.alibabacloud.com(www.php.cn)!