Perry
Perry

Reputation: 1337

Why am I not Getting the XML Values

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

Answers (2)

Rajeev Ranjan
Rajeev Ranjan

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

Martin Honnen
Martin Honnen

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

Related Questions