我有這個類代表了我的XML節點的TestCase:C#,XML如何通過獲取與XMLNode.SelectSingleNode XML節點週期
public class TestCase
{
[XmlAttribute("name")]
public string name { get; set; }
public string version { get; set; }
public string verdict { get; set; }
public string objective { get; set; }
public string criteria { get; set; }
public string issue { get; set; }
public string clientcomments { get; set; }
public string authoritycomments { get; set; }
public string sdk { get; set; }
}
我用XmlNode.SelectSingleNode中獲取特定的節點我XML。有關信息,如果重要,則沒有重複的節點(沒有具有相同名稱屬性的節點)。
到目前爲止,我有這樣的代碼:
public static TestCase FetchNode(string NodeName, string Path)
{
TestCase testcase = new TestCase();
string[] attr = { "name", "version", "verdict", "objective", "criteria"
, "issue", "clientcomments", "authoritycomments", "sdk" };
string[] attrval = { null, null,null,null,null,null,null,null,null};
XmlDocument doc = new XmlDocument();
doc.Load(Path);
XmlNode node = doc.SelectSingleNode("/TestsList/TestCase[@name='" + NodeName + "']");
for (var i = 0; i == attr.Length - 1;i++)
{
attrval[i] = node[attr[i]].InnerText;
}
testcase.name = attrval[0];
testcase.version = attrval[1];
testcase.verdict = attrval[2];
testcase.objective = attrval[3];
testcase.criteria = attrval[4];
testcase.issue = attrval[5];
testcase.clientcomments = attrval[6];
testcase.authoritycomments = attrval[7];
testcase.sdk = attrval[8];
return testcase;
}
但是,此代碼是不可擴展可言,如果我改變我的階級結構,我需要改變功能,因爲類的每個元素都硬編碼在其中。
這是一個廣泛的請求,但我怎麼寫這個函數,所以如果我添加或刪除TestCase的類定義中的字符串,我不必更改函數FetchNode。
謝謝你的時間。
工作得很好,沒有太多變化。謝謝。 –