有誰知道如何將Hashtable轉換爲XML String,然後返回HashTable而不使用基於.NET的XMLSerializer。當代碼運行在IE內部並且瀏覽器的保護模式打開時,XMLSerializer帶來了一些安全問題 -將Hashtable轉換爲xml字符串並返回HashTable而不使用.NET Serializer
所以基本上我正在尋找一種簡單的方法將該Hashtable轉換爲字符串並返回到Hashtable。
任何示例代碼將不勝感激。
感謝
有誰知道如何將Hashtable轉換爲XML String,然後返回HashTable而不使用基於.NET的XMLSerializer。當代碼運行在IE內部並且瀏覽器的保護模式打開時,XMLSerializer帶來了一些安全問題 -將Hashtable轉換爲xml字符串並返回HashTable而不使用.NET Serializer
所以基本上我正在尋找一種簡單的方法將該Hashtable轉換爲字符串並返回到Hashtable。
任何示例代碼將不勝感激。
感謝
您可以使用DataContractSerializer類:
using System;
using System.Collections;
using System.IO;
using System.Runtime.Serialization;
using System.Text;
using System.Xml;
public class MyClass
{
public string Foo { get; set; }
public string Bar { get; set; }
}
class Program
{
static void Main()
{
var table = new Hashtable
{
{ "obj1", new MyClass { Foo = "foo", Bar = "bar" } },
{ "obj2", new MyClass { Foo = "baz" } },
};
var sb = new StringBuilder();
var serializer = new DataContractSerializer(typeof(Hashtable), new[] { typeof(MyClass) });
using (var writer = new StringWriter(sb))
using (var xmlWriter = XmlWriter.Create(writer))
{
serializer.WriteObject(xmlWriter, table);
}
Console.WriteLine(sb);
using (var reader = new StringReader(sb.ToString()))
using (var xmlReader = XmlReader.Create(reader))
{
table = (Hashtable)serializer.ReadObject(xmlReader);
}
}
}
我沒有時間來測試這一點,但嘗試:
XDocument doc = new XDocument("HashTable",
from de in hashTable
select new XElement("Item",
new XAttribute("key", de.Key),
new XAttribute("value", de.Value)));
,將工作是 - 謝謝你 – 2011-06-01 14:42:03