如何从ASPX页面返回XML

时间:2016-03-01 14:30:30

标签: c#

我有一个对象,并希望将其转换为XML并以原始格式在页面上显示。

所需的输出

output

代码:

output <- 'Var1 Freq Position
S5    1 26998698
S3  125 26998698
S1 1587 26998698
S2  340 26998698
S4    8 26998698
S4   68 27252684
S2  703 27252684
S1  913 27252684
S3  293 27252684
S5   58 27252684
S4    7 27209738
S2  383 27209738
S1 1425 27209738
S3  239 27209738
S5    6 27209738'
output<- read.table(text=output, header=T)

结果是这样的。

  

100测试

我该怎么做才能获得所需的输出。

2 个答案:

答案 0 :(得分:5)

实际问题是您将XML作为HTML输出,导致您的浏览器将响应视为“tag soup”,并尝试将其呈现为HTML文档。

这会隐藏所有标记及其属性,并仅在标记内部和标记之间呈现文本。

这不是HTML,而是XML。因此,实际的解决方案是设置正确的内容类型,表明您实际上是从How do you specify your Content Type in ASP.NET WebForms?返回XML:

Response.ContentType = "application/xml";

此外,你是asking to omit the XML declaration。来自how to create an xml using xml writer without declaration elementMSDN: XmlWriterSettings.OmitXmlDeclaration

  

如果将ConformanceLevel设置为Document,则始终会写入XML声明,即使OmitXmlDeclaration设置为true也是如此。

     

如果ConformanceLevel设置为Fragment

,则永远不会写入XML声明

只需将settings.ConformanceLevel设置为ConformanceLevel.Fragment即可。请注意,从技术上讲,您不再编写XML文档,但这种要求在互操作性中很常见。

答案 1 :(得分:3)

我猜测浏览器只是忽略了XML标签。 试试这个:

Response.Write (Server.HTMLEncode(xmlString));

Read here关于HTMLEncode方法。

settings.OmitXmlDeclaration = true;应删除了<?xml version...标记。如果这不起作用,你可以试试这个: 将xmlString加载到XDocument对象中并删除它的声明(based on this answer)

XDocument xdoc = XDocument.Parse(xmlString);
xdoc.Declaration = null;
Response.Write (Server.HTMLEncode(xdoc.ToString()));