确定。因此,对于Windows Phone 7应用程序,请说我有以下XML文件
<Objects>
<Object Property1=”Value1” Property2=”Value2”>
<Property3>Value3</Property3>
</Object>
<Object Property1=”Value1” Property2=”Value2”>
<Property3>Value3</Property3>
</Object>
</Objects>
我有以下课程定义
public class myObject
{
public string Property1 { get; set; }
public string Property2 { get; set; }
public string Property3 { get; set; }
public myObject (string _property1, string _property2, string _property3)
{
this.Property1 = _property1
this.Property1 = _property1
this.Property1 = _property1
}
}
然后我使用以下代码从XML文件加载数据并返回myObjects列表: -
var xdoc = XDocument.Load("myXMLFile.xml");
var result = from o in xdoc.Document.Descendants("Object")
select new myObject
{
Property1 = o.Element("Property1").Value,
Property2 = o.Element("Property2").Value,
Property3 = o.Element("Property3").Value,
};
return result.ToList<myObject>();
为什么返回NullReferenceException?我猜这是我的linq查询不太正确,因为文件正在使用XDocument.Load调用正常加载。
任何帮助都会很棒!
克里斯答案 0 :(得分:4)
对于你提供的xml结构,你需要一个像这样的linq查询:
var xdoc = XDocument.Load("myXMLFile.xml");
var result = from o in xdoc.Document.Descendants("Object")
select new myObject
{
Property1 = o.Attribute("Property1").Value,
Property2 = o.Attribute("Property2").Value,
Property3 = o.Element("Property3").Value
};
就像John所说,当元素或属性不存在时,o.Attribute(“attributeName”)或o.Element(“elementName”)将抛出NullReferenceException。
答案 1 :(得分:0)
Property1 = o.Element("Property1").Value
在针对没有“o
”元素的“Property1
”运行时会抛出NullReferenceException! Element
方法将返回null
。