我想读取一个xml文件数据并从中提取信息,以便以C#.Net vs2008环境的形式显示。 我无法将此数据读入内存中的列表,但我希望从项目中获得可以在另一台计算机系统中运行的.exe文件。所以我想,我不能使用数据库来保存和检索数据! 请帮我解决我的问题!
答案 0 :(得分:3)
使用System.Xml.XmlReader读取XML文件。这是一个仅向前阅读器,一次只加载一些XML。
将此与生成IEnumerable的迭代器方法结合使用,例如此示例,其中MyXmlData是表示XML文件中保存的内容的类以及表单可以使用的类:
public IEnumerable<MyXmlData> QueryFile(String xmlFile)
{
using (var reader = XmlReader.Create(xmlFile))
{
// These are the variables you want to read for each 'object' in the
// xml file.
var prop1 = String.Empty;
var prop2 = 0;
var prop3 = DateTime.Today;
while (reader.Read())
{
// Here you'll have to read an xml node at a time.
// As you read, assign appropriate values to the variables
// declared above.
if (/* Have we finished reading an item? */)
{
// Once you've completed reading xml representing a single
// MyXmlData object, return it using yield return.
yield return new MyXmlData(prop1, prop2, prop3);
}
}
}
}
从该方法返回的值是一系列MyXmlData对象,其中每个对象都会在读取文件时按需创建,一次一个。这将大大减少大型XML文件的内存需求。
然后,您可以使用Linq函数查询MyXmlData对象。例如,您可以使用Take和Skip方法模拟分页。
// Third page - 50 objects per page.
QueryFile(@"x.xml").Skip(100).Take(50);
答案 1 :(得分:0)
最近,microsoft在WCF中提供了一个synidcation类。你可以用它来完成这个任务
答案 2 :(得分:0)