-3

大家好,我正在尝试使用 C# 在中继器中检索 XML 数据。但它给了我错误这是我的代码

var doc = XDocument.Load(Server.MapPath("~/Data/comments.xml"));
    var result = doc.Descendants("comments").Where(x => x.Element("postid").Value == Request.QueryString["id"] && x.Element("status").Value == "Y").Select(x => new
    {


         id=x.Element("id").Value,
        name = x.Element("name").Value,
        comment = x.Element("Comment").Value,
         commenttime = x.Element("Commenttime").Value
        //status=x.Element("status").Value
    }).OrderByDescending(x => x.id).Take(1);
    Repeater2.DataSource = result;
    Repeater2.DataBind();
}

这是我的xml

 <?xml version="1.0" encoding="utf-8"?>
<tbcomments>
  <comments>
    <id>1</id>
    <postid>4</postid>
    <name>azad</name>
    <emailid>chouhan.azad99@gmail.com</emailid>
    <Comment>nice flower</Comment>
    <CommentTime>6/22/2013 2:43:49 PM</CommentTime>
    <status>Y</status>
  </comments>
  <comments>
</tbcomments>

这给了我错误 在此处输入图像描述

请告诉我我错在哪里?

4

2 回答 2

0

当前问题:“Commenttime”拼写错误(应为“CommentTime”)。

其他问题:

  • 公共样本中类成员的非标准命名。公共属性/字段名称使用大写。
  • 节点命名不一致(一些大写,一些小写)。
  • 非 DRY 代码:x.Element(someName).Value内联重复多次,因此会进行任何空检查。
  • 在发布之前没有充分简化问题示例
于 2013-06-27T05:25:58.427 回答
0

XML 元素名称区分大小写。您的源 XML 中有 CommentTime,但代码中有 Commenttime。我还建议使用字符串转换而不是.Value避免 NullReferenceExceptions:

var doc = XDocument.Load(Server.MapPath("~/Data/comments.xml"));
var result = doc.Descendants("comments")
                .Where(x => x.Element("postid").Value == 
                            Request.QueryString["id"] && 
                            x.Element("status").Value == "Y")
                .Select(x => new
{
    id= (string)x.Element("id"),
    name = (string)x.Element("name"),
    comment = (string)x.Element("Comment"),
    commenttime = (string)x.Element("CommentTime")
    //status=x.Element("status").Value
}).OrderByDescending(x => x.id).Take(1);
Repeater2.DataSource = result;
Repeater2.DataBind();
于 2013-06-27T05:26:41.320 回答