当前位置: 移动技术网 > IT编程>开发语言>.net > XmlReader 读取器读取内存流 MemoryStream 的注意事项

XmlReader 读取器读取内存流 MemoryStream 的注意事项

2018年04月25日  | 移动技术网IT编程  | 我要评论

气功大师王林老婆,areyouokay,wwe2014年6月27日

memorystream对象提供了无需进行io就可以创建stream的方法,xmltextwriter和xmlreader提供快速书写和读取xml内容的方法,结合memorystream,就可以直接在内存中构造xmltextwriter,并用xmlreader进行读取。 

使用memorystream和xmltextwriter进行书写xml,需要注意两点:xmltextwriter.flush操作和重设memorystream.position = 0。 

c# 
<%@ page language="c#"%> 
<%@ import namespace="system.xml" %> 
<%@ import namespace="system.io" %> 
<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> 

<script runat="server"> 
protected void button1_click(object sender, eventargs e) 

response.clear(); 
response.contenttype = "text/xml"; 
memorystream msxml = new memorystream(); 
xmltextwriter xmlwriter = new xmltextwriter(msxml, encoding.utf8); 
xmlwriter.writestartelement("rss"); 
xmlwriter.writeattributestring("version", "2.0"); 
xmlwriter.writestartelement("channel"); 
xmlwriter.writeelementstring("title", "【孟宪会之精彩世界】"); 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/rss.aspx"); 
xmlwriter.writeelementstring("description", "net开发技术。"); 
xmlwriter.writeelementstring("language", "zh-cn"); 
xmlwriter.writeelementstring("copyright", "copyright 1999-2007【孟宪会之精彩世界】"); 
xmlwriter.writeelementstring("managingeditor", "amxh[at]21cn.com"); 
xmlwriter.writestartelement("image"); 
xmlwriter.writeelementstring("title", "【孟宪会之精彩世界】"); 
xmlwriter.writeelementstring("width", "144"); 
xmlwriter.writeelementstring("height", "35"); 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/"); 
xmlwriter.writeelementstring("url", "http://dotnet.aspx.cc/images/logorss.gif"); 
xmlwriter.writeendelement(); 

//循环读出数据库内容列表,忽略 
//while (objreader.read()) 
//{ 
// xmlwriter.writestartelement("item"); 
// xmlwriter.writeelementstring("title", objreader.getstring(0)); 
// xmlwriter.writeelementstring("description", objreader.getstring(1)); 
// xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/article/a933b187-06c3-4263-9eec-414a54d9c815/read.aspx"); 
// xmlwriter.writeelementstring("pubdate", objreader.getdatetime(3).tostring("g")); 
// xmlwriter.writeendelement(); 
//} 
//objreader.close(); 
xmlwriter.writestartelement("item"); 
xmlwriter.writeelementstring("title", "asp.net 2.0中直接将access数据库导入到excel文件中"); 
xmlwriter.writeelementstring("description", "asp.net 2.0中直接将access数据库导入到excel文件中"); 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/article/a933b187-06c3-4263-9eec-414a54d9c815/read.aspx"); 
xmlwriter.writeelementstring("pubdate", "sat, 02 dec 2006 09:39:58 gmt"); 
xmlwriter.writeendelement(); 
xmlwriter.writeendelement(); 
xmlwriter.writeendelement(); 
xmlwriter.flush(); // 确保书写器更新到stream中; 
msxml.position = 0; // 重置流的位置,以便我们可以从头读取 
xmlreader xmlreader = xmlreader.create(msxml); 
while (xmlreader.read()) 

if (xmlreader.name == "rss") 

response.write(xmlreader.readouterxml()); 


response.end(); 
msxml.close(); 
xmlwriter.close(); 
xmlreader.close(); 

</script> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
<title>xmlreader 读取器读取内存流 memorystream 的注意事项</title> 
</head> 
<body> 
<form id="form1" runat="server"> 
<asp:button id="button1" runat="server" onclick="button1_click" text="读取数据" /> 
</form> 
</body> 
</html> 
vb.net 

protected sub button1_click(byval sender as object, byval e as eventargs) 
response.clear 
response.contenttype = "text/xml" 
dim msxml as memorystream = new memorystream 
dim xmlwriter as xmltextwriter = new xmltextwriter(msxml, encoding.utf8) 
xmlwriter.writestartelement("rss") 
xmlwriter.writeattributestring("version", "2.0") 
xmlwriter.writestartelement("channel") 
xmlwriter.writeelementstring("title", "【孟宪会之精彩世界】") 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/rss.aspx") 
xmlwriter.writeelementstring("description", "net开发技术。") 
xmlwriter.writeelementstring("language", "zh-cn") 
xmlwriter.writeelementstring("copyright", "copyright 1999-2007【孟宪会之精彩世界】") 
xmlwriter.writeelementstring("managingeditor", "amxh[at]21cn.com") 
xmlwriter.writestartelement("image") 
xmlwriter.writeelementstring("title", "【孟宪会之精彩世界】") 
xmlwriter.writeelementstring("width", "144") 
xmlwriter.writeelementstring("height", "35") 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/") 
xmlwriter.writeelementstring("url", "http://dotnet.aspx.cc/images/logorss.gif") 
xmlwriter.writeendelement 
xmlwriter.writestartelement("item") 
xmlwriter.writeelementstring("title", "asp.net 2.0中直接将access数据库导入到excel文件中") 
xmlwriter.writeelementstring("description", "asp.net 2.0中直接将access数据库导入到excel文件中") 
xmlwriter.writeelementstring("link", "http://dotnet.aspx.cc/article/a933b187-06c3-4263-9eec-414a54d9c815/read.aspx") 
xmlwriter.writeelementstring("pubdate", "sat, 02 dec 2006 09:39:58 gmt") 
xmlwriter.writeendelement 
xmlwriter.writeendelement 
xmlwriter.writeendelement 
xmlwriter.flush 
msxml.position = 0 
dim xmlreader as xmlreader = xmlreader.create(msxml) 
while xmlreader.read 
if xmlreader.name = "rss" then 
response.write(xmlreader.readouterxml) 
end if 
end while 
response.end 
msxml.close 
xmlwriter.close 
xmlreader.close 
end sub 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网