2011-06-01 12 views
5

का उपयोग किये बिना हैशटेबल में कनवर्ट करें क्या कोई जानता है कि हैशटेबल को एक्सएमएल स्ट्रिंग में कनवर्ट करना है, फिर .NET आधारित XMLSerializer का उपयोग किए बिना हैशटेबल में कनवर्ट करना है। जब IE के अंदर कोड चलाता है और ब्राउज़र का संरक्षित मोड चालू होता है तो XMLSerializer कुछ सुरक्षा चिंताओं को चालू करता है -हैशटेबल को एक्सएमएल स्ट्रिंग में कनवर्ट करें और .NET Serializer

तो मूल रूप से मैं हैशटेबल को स्ट्रिंग और वापस हैशटेबल में परिवर्तित करने का एक आसान तरीका ढूंढ रहा हूं।

किसी भी नमूना कोड की सराहना की जाएगी।

धन्यवाद

उत्तर

5

आप 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); 
     } 
    } 
} 
+0

कि काम करेगा हाँ - धन्यवाद –

1

मैं इस परीक्षण करने के लिए समय नहीं है, लेकिन कोशिश:

XDocument doc = new XDocument("HashTable", 
           from de in hashTable 
           select new XElement("Item", 
                new XAttribute("key", de.Key), 
                new XAttribute("value", de.Value))); 
+0

स्रोत प्रकार 'System.Collections.Hashtable' – AMH

+0

के लिए क्वेरी पैटर्न का कार्यान्वयन नहीं मिला, यह काम नहीं करेगा, क्योंकि जल्दबाजी करने योग्य LINQ करने के लिए ienumerator लागू नहीं करता है इसके खिलाफ – AMH

संबंधित मुद्दे