下面的代码示例可能对您有所帮助。
不用在 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 元素“Name”和“Value”中读取。这允许您更改变量名称,而不必担心更新 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; }
}
}