-
测试开始先读取XML源,用一个比较大的RSS文件链接,复制到项目bin/debug目录下。
Stream xmlStream = new MemoryStream(File.ReadAllBytes(path)); 一、XmlDocument 方式
static IList testXmlDocument()
{
var doc = new XmlDocument();
doc.Load(xmlStream);
var nodeList = doc.DocumentElement.ChildNodes;
var lstChannel = new List<Object>(nodeList.Count );
foreach (XmlNode node in nodeList)
{
var channel = new { Title = node.SelectSingleNode("title")。
InnerText,Link = node.SelectSingleNode("link")。
InnerText,Description = node.SelectSingleNode("description")。
InnerText,Content = node.SelectSingleNode("content")。
InnerText,PubDate = node.SelectSingleNode("pubDate")。
InnerText,Author = node.SelectSingleNode("author")。
InnerText,Category = node.SelectSingleNode("category")。
InnerText };
lstChannel.Add(channel);
}
return lstChannel;
}
-
二、XPathNavigator 方式
static IList testXmlNavigator()
{
var doc = new XmlDocument();
doc.Load(xmlStream);
var nav = doc.CreateNavigator();
nav.MoveToRoot();
var nodeList = nav.Select("/channel/item");
var lstChannel = new List<Object>(nodeList.Count);
foreach (XPathNavigator node in nodeList)
{
var channel = new {
Title = node.SelectSingleNode("title")。
Value,Link = node.SelectSingleNode("link")。
Value,Description = node.SelectSingleNode("description")。
Value,Content = node.SelectSingleNode("content")。
Value,PubDate = node.SelectSingleNode("pubDate")。
Value,Author = node.SelectSingleNode("author")。
Value,Category = node.SelectSingleNode("category")。
Value };
lstChannel.Add(channel);
}
return lstChannel;
}
- 3