将列表从html转换为xml格式
本文关键字:xml 格式 转换 html 列表 | 更新日期: 2023-09-27 18:09:46
我正试图用控制台应用程序将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++;
}
以及News类:
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格式?
创建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),
});
}
}
谢谢大家。我将"News"类标记为Serializable,并使用几行代码设法生成xml文件。下面是代码,非常简单:
XmlSerializer serializer = new XmlSerializer(typeof(List<News>));
using (TextWriter writer = new StreamWriter(@"D:'News.xml"))
{
serializer.Serialize(writer, _newsList);
}