当我运行此代码时,我有错误 "对象引用未设置为对象的实例" 扔了,我不明白为什么。
我已经使用debug来破解某些点上的代码,我注意到它在传递给子注释的foreach后会导致错误。
如果有人能对这个问题有所了解,我很高兴
我的Xml:
<?xml version=\"1.0\" encoding=\"utf - 8\"?>
<data type=\"array\" success=\"1\" status=\"200\">
<item>
<id>1</id>
<comment>aaa</comment>
<author>john</author>
<children/>
</item>
<item>
<id>2</id>
<comment>bbb</comment>
<author>paul</author>
<children>
<item>
<id>3</id>
<comment>ccc</comment>
<author>lisa</author>
<children/>
</item>
</children>
</item>
我的代码:
XDocument document = XDocument.Parse(xml);
foreach (XElement item in document.Root.Elements("item"))
{
post.comments.Add(new Comment(item));
}
我的班级:
public class Comment
{
public string id { get; set; }
public string comment { get; set; }
public string author { get; set; }
public IList<Comment> children { get; set; }
public Comment(XElement elem)
{
id = elem.Element("id").Value.ToString();
comment = elem.Element("comment").Value.ToString();
author = elem.Element("author").Value.ToString();
foreach (XElement childComment in elem.Element("children").Elements())
{
children.Add(new Comment(childComment));
}
}
}
答案 0 :(得分:0)
Comment
的构造函数假定public IList<Comment> children
已初始化,但没有代码实际创建列表。
如果您有权访问System.Linq
,这是最简单的:
children = elem.Element("children").Elements().Select(el => new Comment(el)).ToList();
如果您不能加入using System.Linq
,则可以在循环之前简单地初始化children
成员:
children = new List<Comment>();
foreach (XElement childComment in elem.Element("children").Elements())
{
children.Add(new Comment(childComment));
}