Как-то похоже наверное можно это сделать и для хештаблицы.
Единственнное что меня беспокоит - это наличие в тэгах мусора в духе
- Код: Выделить всё
"xsi:type="xsd:string"
Синтаксис:
Используется csharp
using System.Collections.Generic;
using System.Collections;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System;
using System.Text;
using UnityEngine;
public class HashTest : MonoBehaviour
{
public static void Serialize(TextWriter writer, IDictionary dictionary)
{
List<Entry> entries = new List<Entry>(dictionary.Count);
foreach (object key in dictionary.Keys)
{
entries.Add(new Entry(key, dictionary[key]));
}
XmlSerializer serializer = new XmlSerializer(typeof(List<Entry>));
//хак чтобы убрать xsi\xsd мусор?
//XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
//xsn.Add(String.Empty, String.Empty);
//serializer.Serialize(writer, entries, xsn);
serializer.Serialize(writer, entries);
}
public static void Deserialize(TextReader reader, IDictionary dictionary)
{
dictionary.Clear();
XmlSerializer serializer = new XmlSerializer(typeof(List<Entry>));
List<Entry> list = (List<Entry>)serializer.Deserialize(reader);
foreach (Entry entry in list)
{
dictionary[entry.Key] = entry.Value;
}
}
public void Start()
{
Dictionary<string,string> dict = new Dictionary<string,string>();
dict.Add("button 1","Press here");
dict.Add("button 2", "Play!");
dict.Add("button 3", "Exit");
TextWriter text_writer = new StreamWriter(@"d:\test_text.xml", false, Encoding.Unicode);
HashTest.Serialize(text_writer, dict);
}
}
//[System.ComponentModel.DefaultValueAttribute ("2002")]
//public string text;
public class Entry
{
public object Key;
public object Value;
public Entry()
{
}
public Entry(object key, object value)
{
Key = key;
Value = value;
}
}
using System.Collections;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System;
using System.Text;
using UnityEngine;
public class HashTest : MonoBehaviour
{
public static void Serialize(TextWriter writer, IDictionary dictionary)
{
List<Entry> entries = new List<Entry>(dictionary.Count);
foreach (object key in dictionary.Keys)
{
entries.Add(new Entry(key, dictionary[key]));
}
XmlSerializer serializer = new XmlSerializer(typeof(List<Entry>));
//хак чтобы убрать xsi\xsd мусор?
//XmlSerializerNamespaces xsn = new XmlSerializerNamespaces();
//xsn.Add(String.Empty, String.Empty);
//serializer.Serialize(writer, entries, xsn);
serializer.Serialize(writer, entries);
}
public static void Deserialize(TextReader reader, IDictionary dictionary)
{
dictionary.Clear();
XmlSerializer serializer = new XmlSerializer(typeof(List<Entry>));
List<Entry> list = (List<Entry>)serializer.Deserialize(reader);
foreach (Entry entry in list)
{
dictionary[entry.Key] = entry.Value;
}
}
public void Start()
{
Dictionary<string,string> dict = new Dictionary<string,string>();
dict.Add("button 1","Press here");
dict.Add("button 2", "Play!");
dict.Add("button 3", "Exit");
TextWriter text_writer = new StreamWriter(@"d:\test_text.xml", false, Encoding.Unicode);
HashTest.Serialize(text_writer, dict);
}
}
//[System.ComponentModel.DefaultValueAttribute ("2002")]
//public string text;
public class Entry
{
public object Key;
public object Value;
public Entry()
{
}
public Entry(object key, object value)
{
Key = key;
Value = value;
}
}