Reputation: 1337
I have an XML that looks like this
<Registered id="SOP_NBR61553">
<RoleOfPerson>
<PersonBirthDate>
<Date>1970-08-11</Date>
</PersonBirthDate>
<PersonName>
<PersonGivenName>TOMMY</PersonGivenName>
<PersonMiddleName/>
<PersonSurName>SMITH</PersonSurName>
<PersonNameSuffixText/>
</PersonName>
<PersonRaceCode>B</PersonRaceCode>
<PersonSexCode>M</PersonSexCode>
</RoleOfPerson>
</Registered>
When I run this code
var id = custOrd.Element("Registered").Attribute("id");
var BirthDate = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonBirthDate").Element("Date");
var First_Name = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonGivenName");
var Middle_Name = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonMiddleName");
var Last_Name = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonSurName");
var Race = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonRaceCode");
var Sex = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonSexCode");
var FullName = First_Name +" "id;
I am not getting the values for the elements. For example the value of FullName should be "Tommy SOP_NBR61553". However I am seeing this string value
<PersonGivenName>TOMMY</PersonGivenName> id="SOP_NBR61553"
What am I doing wrong here
Upvotes: 0
Views: 40
Reputation: 16
Try (.Value property )like:
var id = custOrd.Element("Registered").Attribute("id").Value;
var First_Name = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonGivenName").Value;
var Middle_Name = custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonMiddleName").Value;
Also one minor change in last line:
var FullName = First_Name +" "+ id;
Upvotes: 0
Reputation: 167696
If that is C# code using LINQ to XML then instead of selecting the attribute or element nodes as you currently do make sure you extract the string value, best done with e.g.
var id = (string)custOrd.Element("Registered").Attribute("id");
var First_Name = (string)custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonGivenName");
Upvotes: 1