如何在ASP.NET页面里显示XML

progra 2009-11-03 03:51:16
普通的ASP.NET页面,从数据库得到一段XML格式的字符串,该如何将这个字符串显示在页面上,最终的效果是能展示出XML的层次结构(XML文档树)。

补充:类似于将一个XML文件拖拽到IE里那种效果,还支持树节点的折叠
...全文
722 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
progra 2009-11-05
  • 打赏
  • 举报
回复
up
  • 打赏
  • 举报
回复
按我上面说的方法后,在页面上加一个ifram加载生成xml文件的那个页面。
dujingjing1230 2009-11-05
  • 打赏
  • 举报
回复
建议你使用一个ascx文件来显示你的xml,然后点击button时把这个ascx文件添加到你需要的页面。
progra 2009-11-05
  • 打赏
  • 举报
回复
UP
nocallstle 2009-11-04
  • 打赏
  • 举报
回复
后台

ArrayList listElement = new ArrayList();
DataSet ListData = new DataSet();
DataSet dbset = GetDataSet("select top 83 * from Orders order by OrderID desc", listElement, 1);
Response.Charset = "utf-8";
Response.ContentType = "text/xml";

Response.Write("<?xml version='1.0' encoding='utf-8'?>");
Response.Write("<Root>");
Response.Write("<PageCounts>");
Response.Write("<page>" + PageGet(dbset.Tables[0].Rows.Count,10) + "</page>");
Response.Write("<Count>" + dbset.Tables[0].Rows.Count + "</Count>");
Response.Write("<Columns>");
for (int m = 0; m < listElement.Count; m++)
{
Response.Write("<DataColumns>" + listElement[m].ToString()+ "</DataColumns>");//将XML结构输出
}
Response.Write("</Columns>");
Response.Write("</PageCounts>");
for (int i = 0; i < dbset.Tables[0].Rows.Count; i++)
{
Response.Write("<News>");
for (int j = 0; j < listElement.Count; j++)
{
Response.Write("<" + listElement[j].ToString() + "><![CDATA[" + dbset.Tables[0].Rows[i][listElement[j].ToString()] + "]]></" + listElement[j].ToString() + ">");
}

Response.Write("</News>");
}

Response.Write("</Root>");
}
略.....


前台:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="XmlNoth.aspx.cs" Inherits="XmlNoth" %>
<%@ OutputCache Duration="1" VaryByParam="None" %>
cnhuangjin 2009-11-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 progra 的回复:]
问题补充:

    页面里有很多内容,其中一个button触发从数据库中取出这个XML字符串,然后想显示在页面下方区域。

   
[/Quote]

那就在要显示xml内容的地方嵌入一个iframe
cnhuangjin 2009-11-04
  • 打赏
  • 举报
回复


using System.IO;

protected void OpenXML(String strXML)
{
try
{
Response.ContentType = "text/xml";
StreamReader sr = new StreamReader(strXML);
string strLine = "";
strLine = sr.ReadLine();
while (strLine != null)
{
Response.Write(strLine);
strLine = sr.ReadLine();
}
sr.Dispose();
sr.Close();
}
catch (Exception ex)
{
Response.Write(ex.Message);
}
}

aspx设计窗体的所有html代码,(当然第一行的<%%>还是要留着的)
把你从数据库中取出的XML格式字符串赋给OpenXML()
然后在page_load中执行
progra 2009-11-04
  • 打赏
  • 举报
回复
up
progra 2009-11-03
  • 打赏
  • 举报
回复
问题补充:

页面里有很多内容,其中一个button触发从数据库中取出这个XML字符串,然后想显示在页面下方区域。

progra 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 truelove12 的回复:]
1、在.aspx文件中,只保留第一行的声明部分,其余代码全部删除。
2、
C# codeprotectedvoid Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType="text/xml";
Response.Write(GetXMLStringFromDB());
}privatestaticstring GetXMLStringFromDB()
{return"<root><books><book name='asp.net developer' /></books></root>";
}
[/Quote]

.ContentType="text/xml";这样不行,因为页面上还有其他元素
chenyunkun2008 2009-11-03
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 yan286093636 的回复:]
直接拖一个TreeView 绑一个XMLDataSource就OK了,自己遍历也行
[/Quote]

想法不错
yan286093636 2009-11-03
  • 打赏
  • 举报
回复
直接拖一个TreeView 绑一个XMLDataSource就OK了,自己遍历也行
  • 打赏
  • 举报
回复
1、在.aspx文件中,只保留第一行的声明部分,其余代码全部删除。
2、

protected void Page_Load(object sender, EventArgs e)
{
Response.Clear();
Response.ContentType = "text/xml";
Response.Write(GetXMLStringFromDB());
}

private static string GetXMLStringFromDB()
{
return "<root><books><book name='asp.net developer' /></books></root>";
}
progra 2009-11-03
  • 打赏
  • 举报
回复
没人知道吗?
vip__888 2009-11-03
  • 打赏
  • 举报
回复
建议用AJAX 不过我不会...
progra 2009-11-03
  • 打赏
  • 举报
回复
to楼上:

可否给个例子,这块一片空白
liujintaozyc 2009-11-03
  • 打赏
  • 举报
回复
用dom技术就可以
xsl
树形

62,072

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧