我有一个对象,并希望将其转换为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测试
我该怎么做才能获得所需的输出。
答案 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 element和MSDN: 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()));