У меня странная проблема с чтением существующих файлов XML.У меня есть файл XML с шагами в качестве элементов.Если в XML есть два шага, я хочу отобразить их в ListBox.
Я построил список из моего XmlDoc:
var myStepList = new Steps(xmlDoc);
Затем я считаю шаги иперейдите к случаю 2, если внутри два шага.
switch (myStepList.amountOfSteps)
{
case 1:
var StepData = myStepList.GetStepData(myStepList.stepList[0]);
ListBoxSteps.Items.Add(StepData[0].ToString());
TextBoxStepNo.Text = StepData[1].ToString();
TextBoxStepColorCode.Text = StepData[2].ToString();
break;
case 2:
var StepData1 = myStepList.GetStepData(myStepList.stepList[0]);
var StepData2 = myStepList.GetStepData(myStepList.stepList[1]);
ListBoxSteps.Items.Add(StepData1[0].ToString());
ListBoxSteps.Items.Add(StepData2[0].ToString());
TextBoxStepNo.Text = StepData1[1].ToString();
TextBoxStepNo2.Text = StepData2[1].ToString();
TextBoxStepColorCode.Text = StepData1[2].ToString();
TextBoxStepColorCode2.Text = StepData2[2].ToString();
break;
}
Когда Stepdata2
определено с правильным содержанием, оно перезаписывает StepData1
.Я не знаю почему, потому что прежде чем он имеет правильное содержание.
вот мой класс Шаги:
class Steps
{
private List<XElement> StepList;
private readonly XAttribute[] StepData;
private int AmountOfSteps = 0;
private readonly int AmountOfStepAttributes = 3;
public Steps(XmlDoc xmlDoc)
{
StepList = xmlDoc.GetStepList();
StepData = new XAttribute[AmountOfStepAttributes];
}
public XAttribute[] GetStepData(XElement step)
{
StepData[0] = step.Attribute("name");
StepData[1] = step.Attribute("stepNo");
StepData[2] = step.Attribute("colorCode");
return StepData;
}
public List<XElement> stepList
{
get { return StepList; }
}
public int amountOfSteps
{
get
{
AmountOfSteps = stepList.Count();
return AmountOfSteps;
}
}
public int amountStepAttributes
{
get { return AmountOfStepAttributes; }
}
Это мой класс под названием XmlDoc:
class XmlDoc
{
private List<string> ListFileNames;
private XDocument XDoc;
private XAttribute RootAttribute;
private List<XElement> StepList;
public XmlDoc()
{
StepList = new List<XElement>();
ListFileNames = new List<string>();
}
public List<string> GetXmlFilesList(string path)
{
List<string> ListFileNames = new List<string>(Directory.GetFiles(path));
return ListFileNames;
}
public XDocument GetXDoc(string selectedXmlFile)
{
XDoc = XDocument.Load(selectedXmlFile);
return XDoc;
}
public XAttribute GetRootAttribute()
{
RootAttribute = XDoc.Root.Attribute("No");
return RootAttribute;
}
public List<XElement> GetStepList()
{
StepList = XDoc.Root.Elements("Step").ToList();
return StepList;
}
}