为什么我没有获得 XML 值

Why am I not Getting the XML Values

我有一个 XML 看起来像这样

<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>

当我运行这段代码

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;

我没有得到元素的值。例如 FullName 的值应该是 "Tommy SOP_NBR61553"。但是我看到这个字符串值

<PersonGivenName>TOMMY</PersonGivenName> id="SOP_NBR61553"

我哪里做错了

如果这是使用 LINQ to XML 的 C# 代码,那么不要像当前那样选择属性或元素节点,而是确保提取字符串值,最好使用例如

var id = (string)custOrd.Element("Registered").Attribute("id");
var First_Name = (string)custOrd.Element("Registered").Element("RoleOfPerson").Element("PersonName").Element("PersonGivenName");

试试 (.Value 属性 ):

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;

最后一行还有一个小改动:

var FullName = First_Name +" "+ id;