泰山脚下

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

如果页面中要在页面中显示XML内容,除了要在页面的代码文件(cs)中放置如下内容外:

Response.Charset = "gb2312";         

Response.ContentType = "text/xml";         

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312"); 

还应该特别注意页面的设计文件(aspx)中只能出现

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="WebApplication123.WebForm1" %>

所以在新建一个asp.net页面后,要把下面的部分:

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    
    </div>
    </form>
</body>
</html>

删掉。否则就会出现上面提到的问题。因为在CS文件中指定的Response.ContentType="text/xml";会与标签<!DOCTYPE >相矛盾。

如果把标签<!DOCTYPE>中的内容删掉,再运行页面,又会出现错误“XML 文档只能有一个顶层元素。”。这又是为什么哪?仔细分析不难看出。通过页面输出的XML内容都会有一个顶层元素<?xml version="1.0" encoding="gb2312" ?> 。因为页面类型被指定为xml,xml文档只能有一个顶层元素。所以要把页面的设计文件(.aspx)文件中的标签全部删掉,只留下

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>

这一行。不难看出,这行是服务端标签,不会发送到客户端。

所以,如果您要在页面中显示XML文档内容,有两个要点:

第一、在页面的布局文件(.aspx)中只留下<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %>一行;

第二、在页面的代码文件(.cs)中指定好输出到客户端内容的编码方式:

Response.Charset = "gb2312";         

Response.ContentType = "text/xml";         

Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

然后再用Response.Write(XML);将XML内容输出到客户端就可以了。当然,XML本身的内容必须是正确的,这可以通过把XML内容粘贴到记事本里另存为*.xml文件,如果可以用IE打开正确显示就说明XML本身是正确的,否则说明XML本身是有问题的。  

 

  Response.Charset = "gb2312";
  Response.ContentType = "text/xml";
  Response.ContentEncoding = System.Text.Encoding.GetEncoding("gb2312");

  string ss = @"<?xml version=""1.0"" encoding=""GB2312""?>";
  ss += "<aaa>123</aaa>";
  Response.Write(ss);

 

posted on 2014-11-20 18:09  泰山脚下  阅读(457)  评论(0编辑  收藏  举报