Mam metodę, która wykonuje się na zdarzeniu form_load, które wydaje się działać poprawnie, pomijając jedną linię.Zagnieżdżona pętla foreach odczytywania .xml i pisania obiektu do listy
private int ReadInPeople()
{
XmlNodeList nodeList = m_xmlDoc.DocumentElement.ChildNodes;
foreach (XmlNode PersonNode in nodeList)
{
Employee ccontact = new Employee();
foreach (XmlNode PersonTag in PersonNode.ChildNodes)
{
switch (PersonTag.Name)
{
case "Employee":
ccontact.EmployeeNumber = PersonTag.FirstChild.Value;
break;
case "FirstName":
ccontact.FirstName = PersonTag.FirstChild.Value;
break;
case "LastName":
ccontact.LastName = PersonTag.FirstChild.Value;
break;
default:
break;
}
}
this.AddContact(ccontact);
}
return nodeList.Count;
}
Metoda AddContact dodaje obiekt pracownika do listy statycznej; jednak linia:
this.AddContact(ccontact);
nie została wykonana.
Próbkę pliku XML:
<?xml version="1.0" encoding="utf-8"?>
<people>
<person>
<Employee>123456789</Employee>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</person>
<person>
<Employee>987654321</Employee>
<FirstName>Ellen</FirstName>
<LastName>Wayne</LastName>
</person>
</people>
Próbowałem ustawienie przerwania i debugowania, i na pewno wystarczy, linia została całkowicie pomijane, jakby to było w ogóle nie było.
Zgodnie z radą Alana, zmieniłem wartość PersonTag.FirstChild.Value, gdy próbowałem odwołać się do węzła ChildNode, który nie istniał.
Zaktualizowana metoda pracy:
private int ReadInPeople()
{
XmlNodeList nodeList = m_xmlDoc.DocumentElement.ChildNodes;
foreach (XmlNode PersonNode in nodeList)
{
Employee ccontact = new Employee();
foreach (XmlNode PersonTag in PersonNode.ChildNodes)
{
switch (PersonTag.Name)
{
case "Employee":
ccontact.EmployeeNumber = PersonTag.InnerText;
break;
case "FirstName":
ccontact.FirstName = PersonTag.InnerText;
break;
case "LastName":
ccontact.LastName = PersonTag.InnerText;
break;
default:
break;
}
}
this.AddContact(ccontact);
}
return nodeList.Count;
}
Czy 'metoda AddContact' oznaczone' System.Diagnostics.ConditionalAttribute'? – eulerfx
@eulerfx - Nie jestem tego świadomy - czy istnieje sposób weryfikacji? – tloveless
Przejdź do definicji tej metody i sprawdź, czy jest ona oznaczona tym atrybutem. – eulerfx