用存储过程 的for xml auto 返回的XMLReader ,在xmldocument 的load时出错,经查找是返回结果有的中文问题,有遇到过的朋友吗?谈一下解决方案
解决方案 »
- NET获取SQL存储过程获取数据的一个讨论
- FreeTextBox控件的问题
- 求组表结构设计问题
- 一个很低级可是令我头疼的Ajax问题
- <ucOperation:OperationUC ID="OperationUC1" runat="server" />
- pdf文件如何输出到ie?同样的程序导word文件成功
- 哪些是服务器端执行的代码,哪些是客户器端执行的代码?
- gridview模板列一问题?
- 请csdn的高手解决实际问题(急)
- 新手上路一个简历的问题!各位高手帮帮忙!!!!
- string”隐式转换为“System.Data.SqlClient.SqlParameter”
- .net 关于URL 重新高手请进在线等候
XmlReader Xr = cooperlib.PageNation.getAllRecordForXML(pq);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(Xr); //出错的地方,提示:出现意外的文件结尾,经查是中文 ServSgXML.TransformSource = "ServSg.xsl";
ServSgXML.Document = xmlDoc;
其中xr是从存储过程来的
XmlReader xdr;
xdr = cmd.ExecuteXmlReader();数据是SqlServer 2005
在查询分析器里执行存储过程中生成的XML直接拷入文本文件存入XML文件,用浏览器打开也提示出错,在文件头部加入
<?xml version="1.0" encoding="gb2312" ?>
然后预览正常
<?xml version="1.0" encoding="utf-8" ?>
我的数据源来自SqlServer的存储过程 for xml auto
怎么加?
添加模板文件,加
<?xml version="1.0" encoding=”GB2312” ?>
xslt样式:
1<?xml version="1.0" encoding="utf-8"?>
2
3<xsl:stylesheet version="1.0"
4 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
5 <xsl:output method="html" />
6 <xsl:param name="BackGroundColor" select="Blue" />
7<xsl:template match="/">
8 <HTML>
9 <HEAD>
10 <TITLE>xslt测试</TITLE>
11 </HEAD>
12 <BODY>
13 <table border="1" cellSpacing="1" cellPadding="1">
14 <center>
15 <xsl:for-each select="//music">
16 <xsl:element name="tr">
17 <xsl:attribute name="bgcolor">
18 <xsl:value-of select="$Color" />
19 </xsl:attribute>
20 <xsl:element name="td">
21 <xsl:value-of select="gs" />
22 </xsl:element>
23 <xsl:element name="td">
24 <xsl:value-of select="gname" />
25 </xsl:element>
26 <xsl:element name="td">
27 <xsl:attribute name="align">center</xsl:attribute>
28 <xsl:value-of select="url" />
29 </xsl:element>
30 </xsl:element>
31 </xsl:for-each>
32 </center>
33 </table>
34 </BODY>
35 </HTML>
36</xsl:template>
37</xsl:stylesheet>
页面文件中:
<%@ Page Language="C#" %>
<%@ Import Namespace="System.Data.SqlClient" %>
<%@ Import Namespace="System.Xml" %>
<%@ Import Namespace="System.Xml.Xsl" %>
<%@ Import Namespace="System.Xml.XPath" %>
<%@ Import Namespace="System.Web.Configuration" %><script runat="server">
void Page_Load(object sender, System.EventArgs e)
{
string connString = WebConfigurationManager.ConnectionStrings["adventureWorks"].ConnectionString; //从WEB.CONFIG读数据库字符连接串
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
SqlCommand command = new SqlCommand("Select top 5 * from music for xml auto,elements", conn);
XmlReader reader = command.ExecuteXmlReader();
XPathDocument xpathDoc = new XPathDocument(reader); //读取数据并以XML形式返回
conn.Close();
string xslPath = Server.MapPath("xsl/music.xsl"); //给XML加样式
XslCompiledTransform transform = new XslCompiledTransform();
transform.Load(xslPath);
XsltArgumentList argsList = new XsltArgumentList();
string backGroundColor = "Tan";
argsList.AddParam("Color", "", backGroundColor); //给样式附值
transform.Transform(xpathDoc, argsList, Response.Output);
}
}
</script>
在SqlServer2005中
用 for xml auto,xtype
然后不用XMLReader而是用object 接收,这样可以转成string 类型,用的时候把编码加上来就行了