目标:
将XML数据应用于List _a
问题:
在进行Jessica black的事务时,我检索错误消息“{”对象引用未设置为
对象的实例。“}”在源代码"_ab.age = li.Element("age").Value;"
,因为没有
xml中Jessicas年龄的数据。同样的问题可能是吉姆韦斯特的性别。
我该怎么办?我开始疯了!
C#以下
public class Program
{
private static List<user> _a = new List<user>();
private static user _ab = new user();
static void Main(string[] args)
{
XDocument xml = XDocument.Load("xml file....");
xml.Root.Descendants("user").ToList().ForEach(li =>
{
_ab = new user();
_ab.firstname = li.Element("firstname").Value;
_ab.lastname = li.Element("lastname").Value;
_ab.age = li.Element("age").Value;
_ab.sex = li.Element("sex").Value;
_a.Add(_ab);
}
}
}
public class user
{
public String firstname;
public String lastname;
public String age;
public String sex;
}
下面的XML代码
<users>
<user>
<firstname>sara</firstname>
<lastname>brown</lastname>
<age>20</age>
<sex>female</sex>
</user>
<user>
<firstname>Jessica</firstname>
<lastname>black</lastname>
<sex>Female</sex>
</user>
<user>
<firstname>Jim</firstname>
<lastname>west</lastname>
<age>26</age>
</user>
<user>
<firstname>robert</firstname>
<lastname>lake</lastname>
<age>41</age>
<sex>male</sex>
</user>
<user>
<firstname>Britany</firstname>
<lastname>McLove</lastname>
<age>21</age>
</user>
</users>
答案 0 :(得分:0)
使用会话操作员:
_ab.age = (string)li.Element("age");
依旧......
如果元素age
不存在,(string)li.Element("age")
将返回null
并且不会抛出任何异常。
答案 1 :(得分:0)
在获取Value
之前测试元素是否为空:
xml.Root.Descendants("user").ToList().ForEach(li =>
{
_ab = new user();
if (li.Element("firstname") != null) _ab.firstname = li.Element("firstname").Value;
if (li.Element("lastname") != null) _ab.lastname = li.Element("lastname").Value;
if (li.Element("age") != null) _ab.age = li.Element("age").Value;
if (li.Element("sex") != null) _ab.sex = li.Element("sex").Value;
_a.Add(_ab);
}