2016-09-29 61 views
0

我试图用控制台应用程序将html列表转换为xml格式,但是我做了我计划的内容,现在我不知道如何继续。我会分享我的代码并解释一下。我现在不知道的是,让我困惑的是'魔术'发生的地方。好吧,我知道我必须从页面中取出该列表,阅读列表中的所有标签,但接下来,我该如何将该列表转换为xml格式?我是新来的XML我知道一些基本知识,所以请帮助我。将列表从html转换为xml格式

这里是应用程序:

static void Main(string[] args) 
{ 
    string _url = "http://example.com/media"; 

    int newsCounter = 0; 
    List<News> _newsList = new List<News>(); 

    HtmlWeb web = new HtmlWeb(); 
    HtmlDocument doc = web.Load(_url); 
    HtmlNode ulNode = doc.DocumentNode.SelectSingleNode("//ul[@class='content articles']"); 

    HtmlNodeCollection liNode = ulNode.SelectNodes(".//li"); 
    foreach (HtmlNode node in ulNode.SelectNodes(".//div[@class='article_box']")) 
    { 
     var news = new News(); 

     news.Imgsrc = node.FirstChild.SelectSingleNode("//img").Attributes["src"].Value; 

     var nodes = doc.DocumentNode.FirstChild.SelectNodes("//img[@src]"); 

     foreach (HtmlNode childNode in node.SelectNodes(".//div[@class='box_info']")) 
     { 
      // string src = node.SelectSingleNode("//img").Attributes["src"].Value; 

      foreach(HtmlNode _node in childNode.SelectNodes(".//h3")) 
      { 
       news.Link = ""; 
       news.Title = _node.FirstChild.InnerText; 
       news.Date = _node.NextSibling.NextSibling.InnerText; 
       news.Text = _node.NextSibling.NextSibling.NextSibling.NextSibling.InnerText; 
      } 
     } 

     _newsList.Add(news); 
     newsCounter++; 

    } 

,也是新闻类:

public class News 
{ 
    public string Imgsrc { get; set; } 

    public string Title { get; set; } 

    public string Link { get; set; } 

    public string Date { get; set; } 

    public string Text { get; set; } 
} 

这些都是我要读从list.I我能够阅读并返回参数我列表中的所有新闻,但接下来,如何将我的列表转换为xml格式?欢迎任何建议。

+1

那么,最简​​单的,现在你有代码,将'News'标记为'Serializable',然后使用'XmlSerializer'来导出它。在使用'XmlDocument'或LINQ to XML时,可能会更容易构建XML。 –

+0

我同意迈克......不需要中间名单。直接使用XDocument构建XML。 – SledgeHammer

回答

0

有很多创建xml的方法。在你的情况中没有很多项目,所以使用Xml linq非常简单。把它放到一个类中可能会产生更清晰的代码,或者你可以像Sledge所建议的那样直接使用代码。

public class News 
 
    { 
 
     public string Imgsrc { get; set; } 
 

 
     public string Title { get; set; } 
 

 
     public string Link { get; set; } 
 

 
     public string Date { get; set; } 
 

 
     public string Text { get; set; } 
 

 
     public XElement ToXml() 
 
     { 
 
      return new XElement("news", new object[] { 
 
       new XElement("Imgscr", Imgsrc), 
 
       new XElement("Title", Title), 
 
       new XElement("Link", Link), 
 
       new XElement("Date", Date), 
 
       new XElement("Text", Text), 
 
      }); 
 
     } 
 
    }

0

感谢大家的家伙。我将'News'类标记为Serializable,并用几行代码管理来生成xml文件。这里的代码很简单: