2012-07-26 185 views
1

我知道它的很多代码...对不起那个....我的列表类是这样的..列表里面名单

public class XMLList 
{ 
    public string Title { get; set; } 
    [DataMember] 
    public string Link { get; set; } 
    [DataMember] 
    public DateTime pubDate { get; set; } 
    [DataMember] 
    public string dcCreator { get; set; } 
    [DataMember] 
    public string GUID { get; set; } 
    [DataMember] 
    public Int32 wpPostId { get; set; } 
    [DataMember] 
    public string wpStatus { get; set; } 
    [DataMember] 
    public Int32 wpMenuOrd { get; set; } 
    [DataMember] 
    public string Category { get; set; } 
    [DataMember] 
    public List<Comment> Comments { get; set; } 
} 

public class Comment 
{ 
    [DataMember] 
    public Int32 wpCmtId { get; set; } 
    [DataMember] 
    public string wpCmtAuthor { get; set; } 
    [DataMember] 
    public string wpCmtAuthorEmail { get; set; } 
    [DataMember] 
    public string wpCmtAuthorURL { get; set; } 
    [DataMember] 
    public Int64 wpCmtAuthorIP { get; set; } 
    [DataMember] 
    public DateTime wpCmtAuthorDate { get; set; } 
} 

我的C#代码是这样的

XmlDocument doc = new XmlDocument(); 
doc.Load(@"xml\willowcreekassociationblog.wordpress.xml"); 
//Get Channel Node 
XmlNode channelNode = doc.SelectSingleNode("rss/channel"); 
if (channelNode != null) 
{ 
    //Add NameSpace 
    XmlNamespaceManager nameSpace = new XmlNamespaceManager(doc.NameTable); 
    nameSpace.AddNamespace("excerpt", "http://wordpress.org/export/1.2/excerpt/"); 
    nameSpace.AddNamespace("content", "http://purl.org/rss/1.0/modules/content/"); 
    nameSpace.AddNamespace("dc", "http://purl.org/dc/elements/1.1/"); 
    nameSpace.AddNamespace("wfw", "http://wellformedweb.org/CommentAPI/"); 
    nameSpace.AddNamespace("wp", "http://wordpress.org/export/1.2/"); 

    //Parse each item 
    foreach (XmlNode itemNode in channelNode.SelectNodes("item")) 
    { 
     objrssItem.Add(rssItem); 
     rssItem.GUID = itemNode.SelectSingleNode("guid").InnerText; 
     rssItem.Title = itemNode.SelectSingleNode("title").InnerText; 
     rssItem.dcCreator = itemNode.SelectSingleNode("dc:creator", nameSpace).InnerText; 
     rssItem.Link = itemNode.SelectSingleNode("link").InnerText; 
     rssItem.pubDate = DateTime.Parse(itemNode.SelectSingleNode("pubDate").InnerText); 
     rssItem.ContentEncoded = itemNode.SelectSingleNode("content:encoded", nameSpace).InnerText; 

     XmlNode cNode = doc.SelectSingleNode("rss/channel/item"); 
     foreach (XmlNode commentNode in cNode.SelectNodes("wp:comment", nameSpace)) 
     { 
      //rssItem.Comments = Comments 
      rsscomment.wpCmtId = Convert.ToInt32(commentNode.SelectSingleNode("wp:comment_id", nameSpace).InnerText); 
      rsscomment.wpCmtAuthor = commentNode.SelectSingleNode("wp:comment_author", nameSpace).InnerText; 
      rsscomment.wpCmtContent = commentNode.SelectSingleNode("wp:comment_content", nameSpace).InnerText; 
     } 
    } 
    oXMLListResult.listOfXMLResult = objrssItem; 
} 

我有xml像enter link description here

当我试图读取通道中的每个项目与xmlnode和它的工作正常。并且每个项目都有多个注释,试图通过在foreach中使用foreach来实现。但WP:评论foreach项目不起作用。我究竟做错了什么?我做了一些谷歌,但没有运气。

谢谢。

+3

这个问题让我想起那些连锁电子邮件笑话,你必须向下滚动几页才能看到妙语。你能删除一些空白吗? – 2012-07-26 15:35:28

+0

空白区域是图像文件。 – Philly 2012-07-26 15:44:16

+1

那么也许你应该裁剪图像文件:P – 2012-07-26 15:44:55

回答

1
XmlNode cNode = doc.SelectSingleNode("rss/channel/item"); 

这是重置item枚举的开始,这将导致每个项目有相同的意见。编辑:
我相信这是解决我提到的问题最简单的方法。通过在已选节点下方搜索,可以避免重复。请注意0​​不再需要。

foreach (XmlNode commentNode in itemNode.SelectNodes("wp:comment", nameSpace)) 
+0

所以如何阅读 Philly 2012-07-26 15:40:22