gpt4 book ai didi

c# - 如何缓存 XmlTextWriter 数据?

转载 作者:行者123 更新时间:2023-11-30 21:18:00 24 4
gpt4 key购买 nike

我有一个页面,我只是在其中将一堆 XML 数据写入屏幕。它进行了几次数据库调用以获取所有数据:

XmlTextWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8);
writer.WriteStartDocument();

writer.WriteStartElement("rss");
writer.WriteAttributeString("version", "2.0");

writer.WriteStartElement("channel");
writer.WriteElementString("title", "MyTitle");
writer.WriteElementString("link", "http://www.mysite.com/");

using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString))
{
SqlCommand cmd = new SqlCommand("SELECT * FROM vwXMLFeedData", conn);

conn.Open();

using (SqlDataReader rdr = cmd.ExecuteReader())
{
while (rdr.Read())
{
writer.WriteStartElement("item");
writer.WriteElementString("title", rdr["Title"].ToString());
writer.WriteElementString("link", rdr["URL"].ToString());
writer.WriteEndElement();
}
}
}

writer.WriteEndElement();
writer.WriteEndElement();
writer.WriteEndDocument();
writer.Close();

我想缓存所有 XML 数据,这样我就不需要每次都调用数据库,但我不确定如何使用 XmlTextWriter 来完成它。这里最好的策略是什么?

最佳答案

如果你想把它缓存在内存中,然后创建一个MemoryStream并写入它。因此,您初始化编写器的代码将变为:

MemoryStream CacheStream = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(CacheStream, Encoding.UTF8);

填充流的代码保持不变,除了在关闭编写器之前,您需要保存流的缓冲区和大小:

writer.Flush();
long CachedDataSize = CacheStream.Position;
byte[] CachedData = CacheStream.Buffer;
writer.Close();

或者,如果您想缓存到文件中,只需创建一个 FileStream 并将 XML 写入其中即可。

无论哪种情况,您都可以在需要向用户发送信息时从缓存数据中读取数据。

关于c# - 如何缓存 XmlTextWriter 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4512843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com