Csharp/C#教程:使用LINQ to XML时如何检查XML是否包含元素?分享


使用LINQ to XML时如何检查XML是否包含元素?

鉴于这种结构:

  user1 /user1.png   user2   public class User { public string UserName {get; set; } public string UserImageLocation {get; set; } } 

我使用LINQ to XML从XML文件中获取数据,如下所示:

 XDocument document = XDocument.Parse(xmlFile); List listOfUsers = (from user in document.Descendants("user") select new User { UserName = user.Element("userName"), UserImageLocation = user.Element("userImageLocation"), } ).ToList(); 

我的问题是并非所有user元素都包含userImageLocation,并且在尝试读取userImageLocation时,它会抛出exception。

如何检查XML元素是否存在,如果存在,请阅读它?

您当前的代码将无法编译,因为您正在尝试将XElement分配给字符串属性。 我的猜测是你正在使用XElement.Value属性将其转换为字符串。 而不是使用显式字符串转换,如果在“空” XElement引用上“调用”它将返回null:

 XDocument document = XDocument.Parse(xmlFile); List listOfUsers = (from user in document.Descendants("user") select new User { UserName = (string) user.Element("userName"), UserImageLocation = (string) user.Element("userImageLocation"), } ).ToList(); 

请注意,这是使用点表示法更具可读性的情况之一:

 XDocument document = XDocument.Parse(xmlFile); List listOfUsers = document .Descendants("user") .Select(user => new User { UserName = (string) user.Element("userName"), UserImageLocation = (string) user.Element("userImageLocation") }) .ToList(); 

尝试以下代码

上述就是C#学习教程:使用LINQ to XML时如何检查XML是否包含元素?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

 UserImageLocation = user.Element("userImageLocation")!=null?user.Element("userImageLocation").Value:string.Empty 

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/1007319.html

(0)
上一篇 2021年12月29日
下一篇 2021年12月29日

精彩推荐