【发布时间】:2015-08-10 04:38:24
【问题描述】:
我正在尝试找出将动态数据从 XML 文件存储到带有子列表的 C# 列表的最佳方法。每个 XML 文档将有 1 个或多个“Sheet”节点,这些节点将始终具有“name”和“data”的属性。每个“Sheet”元素可能有 0 到 X 个子“参数”节点,这些节点始终具有“ParamName”和“ParamValue”的属性。
示例数据集如下所示:
<Root>
<Sheet name="name1" data="This is data for sheet 1">
<Parameters ParamName="PraramName1" ParamValue="ParamValueS1.1">
<Parameters ParamName="PraramName2" ParamValue="ParamValueS1.2">
</Sheet>
<Sheet name="name2" data="This is data for sheet 2">
</Sheet>
<Sheet name="name3" data="This is data for sheet 3">
<Parameters ParamName="PraramName1" ParamValue="ParamValueS3.1">
<Parameters ParamName="PraramName2" ParamValue="ParamValueS3.2">
<Parameters ParamName="PraramName3" ParamValue="ParamValueS3.3">
</Sheet>
</Root>
我正在尝试找出将这些数据存储到每个“Sheet”元素的 C# 列表中的最佳方法,每个“Parameters”元素都有一个可选的子列表。
public class SheetData
{
public string SheetName { get; set;}
public string SheetData { get; set;}
}
public class ParameterData
{
public string ParamName { get; set;}
public string ParamValue {get; set;}
}
public class ComboData
{
public SheetData sDat = new SheetData();
public List<ParameterData> pDat = new List<ParameterData>();
}
我不确定我是否正确设置了 ComboData 类,或者我的问题是否在于实例化该类并向其添加数据。我已经尝试了很多不同的场景来使用这个类,但无法让它工作。下面的例子。
List<SheetData> sInfo = new List<SheetData>();
List<ParameterData> pP = new List<ParameterData>();
// This works for the SheetInfo class and also worked when I added a
// reference to a ParameterData list in this class.
sInfo.Add(new SheetInfo
{
SheetName = "SheetName",
SheetQuery = "TheQuery",
});
SheetInfo sIF = new SheetData();
sIF.SheetName = "SName";
sIF.SheetQuery = "SDat";
// This is my most recent failure at adding sheet data with child param data
List<ComboInfo> CombInf = new List<ComboInfo>();
CombInf.Add(new parameters { ParamName = "hth", ParamValue = "dfsf" }, new SheetInfo { SheetName = "dsdfsd", SheetQuery = "sdfsfs" });
foreach (SheetData si in sInfo)
{
Console.WriteLine(si.SheetName);
}
也许我完全错误地接近了这个要求,不应该尝试使用列表,或者我没有正确实例化列表和子列表。任何指针将不胜感激。
【问题讨论】: