我正在尝试使用控制台应用程序将html列表转换为xml格式,但我做了我计划的事情,现在我不知道如何继续。我将分享我的代码并解释一下。我现在还不知道,让我感到困惑的是魔法'发生。好吧,我知道我必须从页面中获取该列表,阅读包含所有标签的列表,但接下来,如何将该列表转换为xml格式?我是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; }
}
这些是我必须从列表中读取的所有参数。我能够阅读它们并返回列表中的所有新闻,但接下来,如何将列表转换为xml格式?欢迎任何建议。
答案 0 :(得分: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),
});
}
}
答案 1 :(得分:0)
感谢大家。我标记了&#39;新闻&#39; class as Serializable,并使用几行代码管理生成xml文件。这是代码,非常简单:
XmlSerializer serializer = new XmlSerializer(typeof(List<News>));
using (TextWriter writer = new StreamWriter(@"D:\News.xml"))
{
serializer.Serialize(writer, _newsList);
}