无法在LINQ to XML中选择,错误:对象引用未设置为对象的实例
我不熟悉使用Linq转换XML,遇到了一个相当麻烦的错误。当尝试拉入XML文件时,我得到一个错误,读取未设置为对象实例的对象引用。它说错误是因为我试图使用select new语句。我已在下面附上我的代码:无法在LINQ to XML中选择,错误:对象引用未设置为对象的实例,xml,linq,linq-to-xml,Xml,Linq,Linq To Xml,我不熟悉使用Linq转换XML,遇到了一个相当麻烦的错误。当尝试拉入XML文件时,我得到一个错误,读取未设置为对象实例的对象引用。它说错误是因为我试图使用select new语句。我已在下面附上我的代码: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; u
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Xml.Linq;
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
XDocument feed = XDocument.Load(Server.MapPath("VEHICLES.XML"));
var query = from c in feed.Descendants("VEHICLES")
where (string) c.Element("VehicleType").Value == "0"
select new
{
Vin = c.Element("Vin").Value,
Status = c.Element("VehicleType").Value,
Year = c.Element("Year").Value
};
CarLister.DataSource = query;
CarLister.DataBind();
}
}
代码使用select c在所有节点中运行良好;而不是选择New,但理想情况下,我只希望选择某些信息片段,并且在将它们拉入时需要修改一些条目。我真的不知道是什么导致了这个问题,所以任何关于如何解决它的建议或想法都将不胜感激,如果您需要任何其他信息,请询问 看起来xml数据中的某个车辆节点没有Vin、车辆类型或年份
试一试
或者类似于xml数据中的某个车辆节点没有Vin、车辆类型或年份
试一试
或者类似于这些方面的问题是,您到处都在使用Value属性-如果foo.Element的结果。。。由于缺少元素,返回null。幸运的是,有一个简单的解决方法——相反。如果输入为null,XElement显式转换为字符串将返回null,这非常方便
var query = from c in feed.Descendants("VEHICLES")
where (string) c.Element("VehicleType") == "0"
select new
{
Vin = (string) c.Element("Vin"),
Status = (string) c.Element("VehicleType"),
Year = (string) c.Element("Year")
};
在元素没有子元素或子元素的情况下,它将继续存在
但是,如果此故障实际上意味着数据一开始无效,您可能仍然需要异常。这取决于您在多大程度上依赖于数据以使其正常运行。问题在于您在任何地方都使用Value属性-如果foo.Element的结果。。。由于缺少元素,返回null。幸运的是,有一个简单的解决方法——相反。如果输入为null,XElement显式转换为字符串将返回null,这非常方便
var query = from c in feed.Descendants("VEHICLES")
where (string) c.Element("VehicleType") == "0"
select new
{
Vin = (string) c.Element("Vin"),
Status = (string) c.Element("VehicleType"),
Year = (string) c.Element("Year")
};
在元素没有子元素或子元素的情况下,它将继续存在
但是,如果此故障实际上意味着数据一开始无效,您可能仍然需要异常。这取决于你一开始对数据的依赖程度。是的,这让它工作起来更干净了,哈哈,谢谢你的帮助!是的,这让它工作了哈哈,干净多了,谢谢你的帮助!