我想通过Linq解析下面的XML到实体,但我无法获得相应的元素。LINQ到XML与C#中的多个名称空间#
<profile:learner type="" xmlns:profile="http://www.SumURL.com/XML/profile/2.0#" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:vCard="http://www.w3.org/2001/vcard-rdf/3.0#">
<profile:personal type="">
<profile:id>123</profile:id>
<vCard:Name rdf:parseType="Resource" type="">
<vCard:FirstName>ABC</vCard:FirstName>
<vCard:LastName>XYZ</vCard:LastName>
<vCard:UserName>XYZ ABC</vCard:UserName>
<vCard:FullName>ABC XYZ</vCard:FullName>
</vCard:Name>
<vCard:Address rdf:parseType="Resource" type="">
<vCard:Street />
<vCard:Extadd />
<vCard:Locality />
<vCard:Region />
<vCard:PinCode />
</vCard:Address>
<vCard:TelephoneNumber />
<vCard:EmailId />
<vCard:TimeZone>(GMT-05:00) Eastern Time (US & Canada)</vCard:TimeZone>
<vCard:Title />
<vCard:Organization rdf:parseType="Resource" type="">
<vCard:OrgName>Q</vCard:OrgName>
</vCard:Organization>
<vCard:Role />
</profile:personal>
</profile:learner>
XNamespace env = xDoc.Root.Name.NamespaceName;
var a = (from level in xDoc.Descendants(env + "personal")
select new
{
PeopleID = (!string.IsNullOrEmpty(level.Elements(env + "id").First().Value)) ? level.Elements(env + "id").First().Value : String.Empty,
FirstName = (!string.IsNullOrEmpty(level.Elements(env + "Name").Elements(env + "FirstName").First().Value)) ? level.Elements(env + "Name").Elements(rdf + "FirstName").First().Value : String.Empty,
}).ToList();
我能够得到为PERSONID但没有名字,姓氏,角色等
请告诉我,我做错了在上面的LINQ查询。
请帮我一把。
什么相应的元素?你没有给我们提供关于你想要做什么的足够信息。我们只知道你已经有了一些XML,并且遇到了问题。请阅读http://tinyurl.com/so-hints – 2012-03-05 07:01:07