以下のコード サンプルは、役に立つかもしれません。
XML で変数の「名前」と「値」を宣言する代わりに、.NET によって提供される XML シリアル化を使用して、XML を適切な変数に解析します。XML から「名前」を完全に削除するか、値の目的を明確に表現するためのデバイスに変えてください。以下の属性の代わりに要素 (より読みやすい) を使用するように XML を更新しました。
XML サンプル
<Test>
<Params>
<Param>
<Name>Meaningful Parameter Name</Name>
<Value>1</Value>
</Param>
<Param>
<Name>Meaningful Parameter Name2</Name>
<Value>0</Value>
</Param>
</Params>
</Test>
xml シリアライゼーションを使用して、XML 要素を変数に割り当てるのはコード内です。ご覧のとおり、Param クラスには文字列名とブール値が含まれ、XML 要素の「名前」と「値」から読み取られます。これにより、変数名を反映するために XML を更新することを心配することなく、変数名を変更できます。気が変わって XML の「Value」の名前を別の名前に変更したい場合は、XML で定義された新しい名前で[XmlElement("Value")]のコードを更新するだけで済みます。単純!:)
幸運を!
コード例
using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Linq;
using System.Xml.Serialization;
namespace ConsoleApplication1
{
public class Program
{
private static void Main(string[] args)
{
string testXML = @"<Test>
<Params>
<Param>
<Name>Meaningful Parameter Name</Name>
<Value>1</Value>
</Param>
<Param>
<Name>Meaningful Parameter Name2</Name>
<Value>0</Value>
</Param>
</Params>
</Test>";
XDocument doc = XDocument.Parse(testXML);
XmlSerializer serializer = new XmlSerializer(typeof (Test));
Test testDeserialized = (Test) serializer.Deserialize(doc.CreateReader());
foreach (Param param in testDeserialized.Params)
{
Console.WriteLine("Name: " + param.Name + ", Value: " + param.Value);
}
Console.ReadLine();
}
}
[XmlRoot]
public class Test
{
[XmlArray("Params")]
[XmlArrayItem("Param", typeof (Param))]
public Param[] Params { get; set; }
}
public class Param
{
[XmlElement("Name")]
public string Name { get; set; }
[XmlElement("Value")]
public bool Value { get; set; }
}
}