我有一些XML:
<messages>
<message>
<meta appid="1112" date="20111028" msgid="4498016" msgno="855" permlinkdate="2011-10-28">
<summary>RedBook is a fun book</summary>
</meta>
<ISBN>1234123412123</ISBN>
</message>
<message>
<meta appid="1112" date="20111028" msgid="4498016" msgno="855" permlinkdate="2007-1-30">
<summary>BlueBook is a good book</summary>
</meta>
<ISBN>123412341234</ISBN>
</message>
</messages>
我有一些Linq to XML来操作这个XML:
public static List<ReviewDTC> GetReviews()
{
XElement xmlDoc = XElement.Load(@"C:\Users\inelson\Desktop\fiddle.xml");
var dtos = from item in xmlDoc.Descendants("message")
select new ReviewDTC()
{
PubDate = item.Element("meta").Attribute("permlinkdate").Value,
Summary = item.Element("summary").Value,
Isbn = item.Element("ISBN").Value
};
List<ReviewDTC> reviews = new List<ReviewDTC>();
reviews = dtos.ToList();
return reviews;
}
上述代码的目的是为每个消息节点解析文档,并为每个消息节点创建一个具有该节点的子元素(和一个属性)的对象。每个对象都被添加到集合中,依此类推..
在调试此代码时,我在var dtos =之后放置一个BP,并且它声明在实例化一个新的ReviewDTC对象时dtos没有被设置为对象的实例。解析器是否无法读取Meta,Summary或ISBN来构建对象?怎么回事?
我很感激,很开心。
答案 0 :(得分:2)
summary
元素位于meta
元素下。
试试这个:
Summary = item.Element("meta").Element("summary").Value,