微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用Linq到Xml构建对象列表

如何解决使用Linq到Xml构建对象列表

| 我正在尝试使用linq从XML文件提取值来创建对象列表。 XML文件如下所示。
<RootNode>
  <Node1>
     <Node2>
        <results>
           <work>
              <title>title1</title>
              <author>author</author>
              <image_url>image</image_url>
            </work>
    ...
</RootNode>

XDocument results = XDocument.Load(\"url\");
这些“工作”节点(和后续的子节点)可能会多次出现,具体取决于搜索。对于“工作”的每次出现,我想提取标题/作者/图像值以构建一个简单的书本对象:
public class Book
{
    public string Title { get; set; }
    public string Author { get; set; }
    public string ImageUrl { get; set; }
}
现在,我可以遍历xml文件,并使用如下所示的方法选择单个值:
foreach (XElement element in results.Descendants(\"title\"))
{
    string title = element.Value;
}
但是,当我想建立书籍清单时,我一直在尝试各种类似的事情:
List<Book> books = 
    (from book in results.Descendants(\"work\")
            select new Book
            {
                Title = book.Element(\"title\").Value,Author = book.Element(\"name\").Value,ImageUrl = book.Element(\"image_url\").Value,}).ToList<Book>();
但是我一直为此得到一个空引用异常。任何关于我要去哪里错误的指针将不胜感激。 凯文 编辑 大家好,问题出在XML文件而不是linq语句。谢谢。     

解决方法

经过几次小的修改,它对我有用:
    var books = (from book in results.Descendants(\"work\")
        select new Book
                {
                    Title = book.Element(\"title\").Value,Author = book.Element(\"author\").Value,ImageUrl = book.Element(\"image\").Value,}).ToList();
    ,空值是指空引用异常吗?我看到在您的代码中您正在寻找一个\“ image_url \”元素,但是在您的示例中有一个\“ image \”元素。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。