这是我解析的XML:空对象引用
<FEED>
<FEED_HEADER>
<FEED_NAME>foo</FEED_NAME>
<FEED_CODE>foobar123</FEED_CODE>
</FEED_HEADER>
<FEED_CONTENT>
<DOC>
<PUB_DATE>2011-12-01</PUB_DATE>
<TITLE>Monkey Bombs</TITLE>
</DOC>
<DOC>
<PUB_DATE>2011-12-10</PUB_DATE>
<TITLE>A Silly Hat</TITLE>
</DOC>
<DOC>
<PUB_DATE>2011-12-25</PUB_DATE>
<TITLE>Wind Blows Up My Skirt</TITLE>
</DOC>
</FEED_CONTENT>
</FEED>
而且我用我已经写建立一个基于对象的列表,这个LINQ代码解析它商务部元素和它的后续元素:
public List<Review> GetReviews(string filePath, FileInfo file, DirectoryInfo directory, XElement xmlDoc)
{
IEnumerable<BookReview> reviews = null;
try
{
reviews = from item in xmlDoc.Descendants("DOC")
select new BookReview()
{
PubDate = item.Element("PUB_DATE").Value,
Title = item.Element("TITLE").Value,
};
}
catch (Exception ex)
{
logger.Info(string.Format("Error while parsing file {0}\n", file.Name) + " " + ex.Message.ToString());
}
return reviews.Cast<Review>().ToList();
}
在过去,这个代码将工作在DOC元素只是根元素之下,现在的DOC元件进一步嵌套到FEED_CONTENT元素,我得到一个空引用异常。我认为LINQ可以直接访问我想要的而不知道它在层次结构中的位置。 那么现在我需要写什么来访问DOC元素?
这应该工作。您粘贴的XML虽然不完整或无效。 – BrokenGlass