2016-09-29 63 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文件。這裏的代碼很簡單: