鉴于此结构:
<root>
<user>
<userName>user1</userName>
<userImageLocation>/user1.png</userImageLocation>
</user>
<user>
<userName>user2</userName>
</user>
</root>
public class User
{
public string UserName {get; set; }
public string UserImageLocation {get; set; }
}
我使用 LINQ to XML 从 XML 文件获取数据,如下所示:
XDocument document = XDocument.Parse(xmlFile);
List<User> listOfUsers =
(from user in document.Descendants("user")
select new User {
UserName = user.Element("userName"),
UserImageLocation = user.Element("userImageLocation"),
}
).ToList<User>();
我的问题是并非所有用户元素都包含 userImageLocation,并且当尝试读取 userImageLocation 时,它会引发异常。
如何检查 XML 元素是否存在,如果存在,则读取它?
您当前的代码将无法编译,因为您正在尝试分配XElement
到字符串属性。我的猜测是你正在使用XElement.Value
属性将其转换为字符串。相反,使用显式字符串转换,如果您在 null 上调用它,它将返回 nullXElement
参考:
XDocument document = XDocument.Parse(xmlFile);
List<User> listOfUsers =
(from user in document.Descendants("user")
select new User {
UserName = (string) user.Element("userName"),
UserImageLocation = (string) user.Element("userImageLocation"),
}
).ToList<User>();
请注意,这是使用点表示法更具可读性的情况之一:
XDocument document = XDocument.Parse(xmlFile);
List<User> listOfUsers = document
.Descendants("user")
.Select(user => new User {
UserName = (string) user.Element("userName"),
UserImageLocation = (string) user.Element("userImageLocation") })
.ToList();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)