C# 如何使用XmlReader类c进行分页#
目前,我使用LINQ从xml文件中获取数据,但问题是我使用XDocument加载xml文件,但XDocument类将xml数据加载到内存中。所以,如果我的xml文件中有10000个数据,那么XDocument类将把10000个数据加载到内存中。所以有人告诉我,如果将读取xml数据与XmlReader类一起使用,那么它将不会将完整数据转储到内存中 目前,我用这种方式从xml文件中获取数据 我的xml数据如下所示:C# 如何使用XmlReader类c进行分页#,c#,xml,linq,pagination,xmlreader,C#,Xml,Linq,Pagination,Xmlreader,目前,我使用LINQ从xml文件中获取数据,但问题是我使用XDocument加载xml文件,但XDocument类将xml数据加载到内存中。所以,如果我的xml文件中有10000个数据,那么XDocument类将把10000个数据加载到内存中。所以有人告诉我,如果将读取xml数据与XmlReader类一起使用,那么它将不会将完整数据转储到内存中 目前,我用这种方式从xml文件中获取数据 我的xml数据如下所示: <?xml version="1.0" encoding="utf-8"?&g
<?xml version="1.0" encoding="utf-8"?>
<Root>
<Orders>
<OrderID>10248</OrderID>
<CustomerID>VINET</CustomerID>
<EmployeeID>5</EmployeeID>
<OrderDate>1996-07-04T00:00:00</OrderDate>
<RequiredDate>1996-08-01T00:00:00</RequiredDate>
<ShippedDate>1996-07-16T00:00:00</ShippedDate>
<ShipVia>3</ShipVia>
<Freight>32.3800</Freight>
<ShipName>Vins et alcools Chevalier</ShipName>
<ShipAddress>59 rue de l'Abbaye</ShipAddress>
<ShipCity>Reims</ShipCity>
<ShipPostalCode>51100</ShipPostalCode>
<ShipCountry>France</ShipCountry>
</Orders>
</Root>
有人告诉我如何使用xmlreader从xml文件中读取数据,其中包含分页和ORDERBY子句
我得到了一次成功,但不知道如何将其用于我的目的:
using( var reader = XmlReader.Create( . . . ) )
{
reader.MoveToContent();
reader.ReadToDescendant( "book" );
// skip N <book> elements
for( int i = 0; i < N; ++i )
{
reader.Skip();
reader.ReadToNextSibling( "book" );
}
// read M <book> elements
for( int i = 0; i < M; ++i )
{
var s = reader.ReadOuterXml();
Console.WriteLine( s );
reader.ReadToNextSibling( "book" );
}
}
使用(var reader=XmlReader.Create(…)
{
reader.MoveToContent();
reader.ReadToDescendant(“书”);
//跳过N个元素
对于(int i=0;i
因此,请参阅上面的代码,并帮助我构造使用xml reader获取分页数据的代码。试试这段代码。你最近的帖子被锁定了,所以我必须在这里回答
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create(FILENAME);
Order order = new Order();
while(reader.ReadToFollowing("Orders"))
{
string xml = reader.ReadOuterXml().Trim();
XElement element = XElement.Parse(xml);
order.Add(element);
}
order.Sort();
}
}
public class Order
{
public void Add(XElement element)
{
if (orders == null)
{
orders = new List<Order>();
}
Order newOrder = new Order();
newOrder.OrderId = int.Parse(element.Element("OrderID").Value);
newOrder.CustomerId = element.Element("CustomerID").Value;
newOrder.EmployeeId = int.Parse(element.Element("EmployeeID").Value);
newOrder.OrderDate = DateTime.Parse(element.Element("OrderDate").Value);
newOrder.RequiredDate = DateTime.Parse(element.Element("RequiredDate").Value);
newOrder.ShippedDate = DateTime.Parse(element.Element("ShippedDate").Value);
newOrder.ShipVia = int.Parse(element.Element("ShipVia").Value);
newOrder.Freight = double.Parse(element.Element("Freight").Value);
newOrder.ShipName = element.Element("ShipName").Value;
newOrder.ShipAddress = element.Element("ShipAddress").Value;
newOrder.ShipCity = element.Element("ShipCity").Value;
newOrder.ShipPostalCode = int.Parse(element.Element("ShipPostalCode").Value);
newOrder.ShipCountry = element.Element("ShipCountry").Value;
orders.Add(newOrder);
}
public void Sort()
{
orders = orders.OrderBy(x => x.OrderId).ToList();
}
public static List<Order> orders { get; set; }
public int OrderId { get; set; }
public string CustomerId { get; set; }
public int EmployeeId { get; set; }
public DateTime OrderDate { get; set; }
public DateTime RequiredDate { get; set; }
public DateTime ShippedDate { get; set; }
public int ShipVia { get; set; }
public double Freight { get; set; }
public string ShipName { get; set; }
public string ShipAddress { get; set; }
public string ShipCity { get; set; }
public int ShipPostalCode { get; set; }
public string ShipCountry { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReader=XmlReader.Create(文件名);
订单=新订单();
while(reader.ReadToFollowing(“订单”))
{
字符串xml=reader.ReadOuterXml().Trim();
XElement元素=XElement.Parse(xml);
添加(元素);
}
order.Sort();
}
}
公共阶级秩序
{
公共空白添加(XElement元素)
{
if(orders==null)
{
订单=新列表();
}
订单newOrder=新订单();
newOrder.OrderId=int.Parse(element.element(“OrderId”).Value);
newOrder.CustomerId=element.element(“CustomerId”).Value;
newOrder.EmployeeId=int.Parse(element.element(“EmployeeId”).Value);
newOrder.OrderDate=DateTime.Parse(element.element(“OrderDate”).Value);
newOrder.RequiredDate=DateTime.Parse(element.element(“RequiredDate”).Value);
newOrder.ShippedDate=DateTime.Parse(element.element(“ShippedDate”).Value);
newOrder.ShipVia=int.Parse(element.element(“ShipVia”).Value);
newOrder.Freight=double.Parse(element.element(“运费”).Value);
newOrder.ShipName=element.element(“ShipName”).Value;
newOrder.ShipAddress=element.element(“ShipAddress”).Value;
newOrder.ShipCity=element.element(“ShipCity”).Value;
newOrder.shippastalcode=int.Parse(element.element(“shippastalcode”).Value);
newOrder.ShipCountry=element.element(“ShipCountry”).Value;
订单。添加(新订单);
}
公共无效排序()
{
orders=orders.OrderBy(x=>x.OrderId.ToList();
}
公共静态列表顺序{get;set;}
公共int-OrderId{get;set;}
公共字符串CustomerId{get;set;}
public int EmployeeId{get;set;}
public DateTime OrderDate{get;set;}
所需公共日期时间日期{get;set;}
公共日期时间ShippedDate{get;set;}
公共int ShipVia{get;set;}
公共双运费{get;set;}
公共字符串ShipName{get;set;}
公共字符串ShipAddress{get;set;}
公共字符串ShipCity{get;set;}
公共int shippestalcode{get;set;}
公共字符串ShipCountry{get;set;}
}
}
试试这段代码。你最近的帖子被锁定了,所以我必须在这里回答
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Xml;
using System.Xml.Linq;
namespace ConsoleApplication1
{
class Program
{
const string FILENAME = @"c:\temp\test.xml";
static void Main(string[] args)
{
XmlReader reader = XmlReader.Create(FILENAME);
Order order = new Order();
while(reader.ReadToFollowing("Orders"))
{
string xml = reader.ReadOuterXml().Trim();
XElement element = XElement.Parse(xml);
order.Add(element);
}
order.Sort();
}
}
public class Order
{
public void Add(XElement element)
{
if (orders == null)
{
orders = new List<Order>();
}
Order newOrder = new Order();
newOrder.OrderId = int.Parse(element.Element("OrderID").Value);
newOrder.CustomerId = element.Element("CustomerID").Value;
newOrder.EmployeeId = int.Parse(element.Element("EmployeeID").Value);
newOrder.OrderDate = DateTime.Parse(element.Element("OrderDate").Value);
newOrder.RequiredDate = DateTime.Parse(element.Element("RequiredDate").Value);
newOrder.ShippedDate = DateTime.Parse(element.Element("ShippedDate").Value);
newOrder.ShipVia = int.Parse(element.Element("ShipVia").Value);
newOrder.Freight = double.Parse(element.Element("Freight").Value);
newOrder.ShipName = element.Element("ShipName").Value;
newOrder.ShipAddress = element.Element("ShipAddress").Value;
newOrder.ShipCity = element.Element("ShipCity").Value;
newOrder.ShipPostalCode = int.Parse(element.Element("ShipPostalCode").Value);
newOrder.ShipCountry = element.Element("ShipCountry").Value;
orders.Add(newOrder);
}
public void Sort()
{
orders = orders.OrderBy(x => x.OrderId).ToList();
}
public static List<Order> orders { get; set; }
public int OrderId { get; set; }
public string CustomerId { get; set; }
public int EmployeeId { get; set; }
public DateTime OrderDate { get; set; }
public DateTime RequiredDate { get; set; }
public DateTime ShippedDate { get; set; }
public int ShipVia { get; set; }
public double Freight { get; set; }
public string ShipName { get; set; }
public string ShipAddress { get; set; }
public string ShipCity { get; set; }
public int ShipPostalCode { get; set; }
public string ShipCountry { get; set; }
}
}
使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用系统文本;
使用System.IO;
使用System.Xml;
使用System.Xml.Linq;
命名空间控制台应用程序1
{
班级计划
{
常量字符串文件名=@“c:\temp\test.xml”;
静态void Main(字符串[]参数)
{
XmlReader=XmlReader.Create(文件名);
订单=新订单();
while(reader.ReadToFollowing(“订单”))
{
字符串xml=reader.ReadOuterXml().Trim();
XElement元素=XElement.Parse(xml);
添加(元素);
}
order.Sort();
}
}
公共阶级秩序
{
公共空白添加(XElement元素)
{
if(orders==null)
{
订单=新列表();
}
订单newOrder=新订单();
newOrder.OrderId=int.Parse(element.element(“OrderId”).Value);
newOrder.CustomerId=element.element(“CustomerId”).Value;
newOrder.EmployeeId=int.Parse(element.element(“EmployeeId”).Value);
newOrder.OrderDate=DateTime.Parse(element.element(“OrderDate”).Value);
newOrder.RequiredDate=DateTime.Parse(element.element(“RequiredDate”).Value);
newOrder.ShippedDate=DateTime.Parse(element.element(“ShippedDate”).Value);
newOrder.ShipVia=int.Parse(element.element(“ShipVia”).Value);
newOrder.Freight=double.Parse(element.element(“运费”).Value);
newOrder.ShipName=element.element(“ShipName”).Value;
newOrder.ShipAddress=element.element(“ShipAddress”).Value;
newOrder.ShipCity=element.element(“ShipCity”).Value;