2013-06-27 5 views
-3

안녕하세요. 모두 C#으로 리피터에서 XML 데이터를 검색하려고합니다. 하지만 내 코드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>[email protected]</emailid> 
    <Comment>nice flower</Comment> 
    <CommentTime>6/22/2013 2:43:49 PM</CommentTime> 
    <status>Y</status> 
    </comments> 
    <comments> 
</tbcomments> 

나를 내가 잘못 곳이 enter image description here

말씀 해주십시오 오류주고있다 여기에 나에게 오류 입니다주고있다?

답변

0

XML 요소 이름은 대소 문자를 구별 게시하기 전에 충분히 문제 샘플을 간단하지. 소스 XML에는 CommentTime이 있지만 코드에는 Commenttime이 있습니다.

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(); 
+0

같은 내가 얼마나 바보 찾지 못했습니다 약간의 실수 .. :(그런데이 덕분에 지금 일을 : 나는 대신 NullReferenceExceptions을 방지하는 .Value의 캐스트 문자열을 사용하여 제안 –

0

현재 문제 : "Commenttime"철자가 잘못되었습니다 ("CommentTime"이어야 함).

다른 문제 : 공공 샘플 클래스 멤버에 대한

  • 비 표준 이름. public 속성/필드 이름에는 UpperCase를 사용하십시오.
  • 노드의 이름이 일치하지 않습니다 (일부 대문자, 일부 소문자).
  • 비 DRY 코드 : x.Element(someName).Value 여러 번 인라인을 반복하므로 모든 null 검사가 노출됩니다.
관련 문제