代码如下,执行时提示空指针异常,谁知道是什么原因?
执行后报的错:Object reference not set to an instance of an object.
XML文件:
<jobFlow>
<unit>
<unitID>00000</unitID>
<name>BEGIN</name>
<unitType>Terminator</unitType>
<nextUnit>000003</nextUnit>
</unit>
</jobFlow>
代码:
string xmlPath = @"D:\a\xml\BIS100\MAIN_SECT.xml";
XDocument myXDoc = XDocument.Load(xmlPath);
XElement rootNode = myXDoc.Element("jobFlow");
下面注释的这部分代码执行是正常的
//var query = from item in rootNode.Descendants("unit")
// select new
// {
// unitID = item.Element("unitID").Value,
// name = item.Element("name").Value,
// unitType = item.Element("unitType").Value,
// nextUnit = item.Element("nextUnit").Value,
// };
想直接转list<T>, 报错 Object reference not set to an instance of an object.
List<JobFlow> jobFlows = (from item in rootNode.Descendants("unit")
select new JobFlow
{
UnitID = item.Element("unitID").Value,
Name = item.Element("name").Value,
UnitType = item.Element("unitType").Value,
NextUnit = item.Element("nextUnit").Value
}).ToList<JobFlow>();
public class JobFlow
{
public string UnitID { get; set; }
public string Name { get; set; }
public string UnitType { get; set; }
public string NextUnit { get; set; }
}
这么简单的描述,没办法判断你的问题,可以贴出异常的代码
确定rootNode有效吗? 确定该xml被打开了吗?
看我的问题,我修改了一下,谢谢
@韩之一:
这样写就可以了
XDocument myXDoc = XDocument.Load(xmlPath); List<JobFlow> jobFlows = (from item in myXDoc.Descendants("unit") select new JobFlow { UnitID = item.Element("unitID").Value, Name = item.Element("name").Value, UnitType = item.Element("unitType").Value, NextUnit = item.Element("nextUnit").Value }).ToList<JobFlow>();
@visonme: @visonme: 找到问题的原因了,xml内容的问题,不是所有的属性都有
运行起来没问题啊!
@visonme: 找到问题的原因了,xml内容的问题,不是所有的属性都有
@韩之一: 解决了就行!