Reading XML nodes as C# objects



I have an xml file. I want to read it and after that i want to set values of that xml file to an object that i created and finally i want to add these objects to a list. The problem is, after adding the list when i print the some object values, all of theme are same and belong to last <current id="3"> node. Here is the xml file and implementation


XML:



<currents>
<current id="1">
<currentCode>1</currentCode>
<currentName>c1</currentName>
<currentAddress>a1</currentAddress>
<currentTel>02321111111</currentTel>
<fax>02321111111</fax>
<currentProvince>İzmir</currentProvince>
<currentCounty>Bornova</currentCounty>
<taxOffice>Bornova1</taxOffice>
<taxNo>111</taxNo>
<currentType>t1</currentType>
<postalCode>35100</postalCode>
<countryCode>TR</countryCode>
<additionalCurrentCode>1</additionalCurrentCode>
</current>
<current id="2">
<currentCode>2</currentCode>
<currentName>c2</currentName>
<currentAddress>a2</currentAddress>
<currentTel>02321111112</currentTel>
<fax>02321111112</fax>
<currentProvince>Aydın</currentProvince>
<currentCounty>Nazilli</currentCounty>
<taxOffice>Nazilli1</taxOffice>
<taxNo>222</taxNo>
<currentType>t2</currentType>
<postalCode>09800</postalCode>
<countryCode>TR</countryCode>
<additionalCurrentCode>2</additionalCurrentCode>
</current>
<current id="3">
<currentCode>3</currentCode>
<currentName>c3</currentName>
<currentAddress>a3</currentAddress>
<currentTel>02321111113</currentTel>
<fax>02321111113</fax>
<currentProvince>İstanbul</currentProvince>
<currentCounty>Kadıköy</currentCounty>
<taxOffice>Kadıköy1</taxOffice>
<taxNo>333</taxNo>
<currentType>t3</currentType>
<postalCode>19600</postalCode>
<countryCode>TR</countryCode>
<additionalCurrentCode>3</additionalCurrentCode>
</current>
</currents>


C#:



class Program
{
static void Main(string[] args)
{
String name = "";
String value = "";

Current current = new Current();
List<Current> currentList = new List<Current>();

// Create an isntance of XmlTextReader and call Read method to read the file
XmlTextReader textReader = new XmlTextReader("D:\\c.xml");
textReader.Read();
// If the node has value
while (textReader.Read())
{
if(textReader.NodeType == XmlNodeType.Element)
{
name = textReader.Name;
}

if(textReader.NodeType == XmlNodeType.Text)
{
switch (name)
{
case "currentCode":
value = textReader.Value;
current.CurrentCode = Convert.ToInt32(value);
break;
case "currentName":
value = textReader.Value;
current.CurrentName = value.ToString();
break;
case "currentAddress":
value = textReader.Value;
current.CurrentAdress = value.ToString();
break;
case "currentTel":
value = textReader.Value;
current.CurrentTel = value.ToString();
break;
case "fax":
value = textReader.Value;
current.Fax = value.ToString();
break;
case "currentProvince":
value = textReader.Value;
current.CurrentProvince = value.ToString();
break;
case "currentCounty":
value = textReader.Value;
current.CurrentCounty = value.ToString();
break;
case "taxOffice":
value = textReader.Value;
current.TaxOffice = value.ToString();
break;
case "taxNo":
value = textReader.Value;
current.TaxNo = value.ToString();
break;
case "currentType":
value = textReader.Value;
current.CurrentType = value.ToString();
break;
case "postalCode":
value = textReader.Value;
current.PostalCode = value.ToString();
break;
case "countryCode":
value = textReader.Value;
current.CountryCode = value.ToString();
break;
case "additionalCurrentCode":
value = textReader.Value;
current.AdditionalCurrentCode = value.ToString();
currentList.Add(current);
break;
}
}
}

String currentTest1 = currentList[0].CurrentProvince;
String currentTest2 = currentList[1].CurrentProvince;
String currentTest3 = currentList[2].CurrentProvince;

Console.WriteLine("Test current name1:" + currentTest1);
Console.WriteLine("Test current name2:" + currentTest2);
Console.WriteLine("Test current name3:" + currentTest3);

Console.ReadKey();
}
}

No comments:

Post a Comment