木曜日, 9月 24, 2015

C#: ハッシュテーブルをXML形式で書き出す・読み込む

C#でHashtableのデータをXML形式で読み書きするためのコードです。

忙しい貴方のため(将来の自分ですね)コピペできるようそのまま置いておきます。

  • writeXML(Hashtable directory, string fileName):
    Hashtable のデータをXML形式で保存します。

  • readXML(string fileName):
    XML形式のデータをHashtable 形式で読み込みます。

public static Hashtable readXML(string fileName)
{
Hashtable directory = new Hashtable();
XmlDocument document = new XmlDocument();
document.Load(fileName);
foreach (XmlElement element in document.DocumentElement)
{
string name = element.GetAttribute("name");
int number = int.Parse(element.GetAttribute("number"));
directory.Add(name, number);
}
return directory;
}
public static void writeXML(Hashtable directory, string fileName)
{
XmlDocument document = new XmlDocument();
XmlDeclaration declaration = document.CreateXmlDeclaration("1.0", "UTF-8", null);
XmlElement root = document.CreateElement("directory");
document.AppendChild(declaration);
document.AppendChild(root);
foreach (DictionaryEntry entry in directory)
{
XmlElement element = document.CreateElement("extension");
element.SetAttribute("name", entry.Key.ToString());
element.SetAttribute("number", entry.Value.ToString());
root.AppendChild(element);
}
document.Save(fileName);
}
view raw xml.cs hosted with ❤ by GitHub

出来上がったXML形式のファイルです。

<?xml version="1.0" encoding="UTF-8"?>
<directory>
<extension name="L. G." number="8209" />
<extension name="L. D." number="8220" />
<extension name="F. G." number="8227" />
<extension name="J. Q." number="8214" />
<extension name="K. P." number="8215" />
</directory>
view raw directory.xml hosted with ❤ by GitHub

Qt: 外部プログラムを起動する

  Qt/C++ のアプリは、外部へ直接アクセスできます。これはネットアプリでは不可能な Qt のメリットです。 外部プログラムを起動することもできます。QProcess::startDetached() を使うと独立したプロセスを立ち上げることができます。 この QProces...