[英]Display HTML and XML content on the same HTML page
我有一个HTML
页面,其中有一个按钮; 按下该按钮javascript
function 被调用 - 这里产生一个字符串,它是 xml 的表示。 我想用按钮在同一页面上表示这个 xml,类似于下图中的:!
这是我尝试过但没有工作的简化代码(在代码下查看它的结果 - 没有显示):
<html>
<head>
<script type="text/javascript">
function xml_test()
{
var xmlString = "<note><name>Kundan Kumar Sinha</name><place>Bangalore</place><state>Karnataka</state></note>";
var my_div = document.getElementById("labelId");
alert(xmlString)
my_div.innerHTML += xmlString;
}
</script>
</head>
<body>
<input type="button" value="TEST" onclick="xml_test()"/>
<br><br>
<label id="labelId">XML: </label>
</body>
</html>
我也尝试过使用 iframe,但我没有 src 属性的文件。 我试过的是:
<html>
<head>
<script type="text/javascript">
function populateIframe() {
var xml = "<?xml version='1.0' encoding='UTF8' standalone='yes'?><note><name>Kundan Kumar Sinha</name><place>Bangalore</place><state>Karnataka</state></note>";
var iframe = document.getElementById('myIframe');
var idoc= iframe.contentDocument || iframe.contentWindow.document; // IE compat
idoc.open("text/xml"); // I know idoc.open(); exists but about idoc.open("text/xml"); I'm not sure if exists;
idoc.write('<textarea name="xml" rows="5" cols="60"></textarea>');
//idoc.write(xml); // doesn't work
idoc.getElementsByTagName('textarea')[0].value= xml;
idoc.close();
}
</script>
</head>
<body onload="populateIframe();">
<iframe id="myIframe" width="900" height="400"></iframe>
</body>
</html>
结果是:
我已经查看了如何使用 Javascript 在 HTML 页面中将 XML 显示为可折叠和可扩展的树? 我从这里得到了一些想法
感谢你们对我的帮助!
只需创建一个 HttpHandler,并在 Iframe 中打开它:
public class Handler : IHttpHandler
{
#region IHttpHandler Members
public bool IsReusable
{
get { return true; }
}
public void ProcessRequest(HttpContext context)
{
XmlSerializer serializer = new XmlSerializer(typeof(Note));
MemoryStream stream = new MemoryStream();
StreamWriter writer = new StreamWriter(stream, Encoding.Unicode);
serializer.Serialize(writer, new Note() { Name = "Kundan Sinha", Place = "Bangalore", State = "Karnataka" });
int count = (int)stream.Length;
byte[] arr = new byte[count];
stream.Seek(0, SeekOrigin.Begin);
stream.Read(arr, 0, count);
UnicodeEncoding utf = new UnicodeEncoding();
stream.Close();
writer.Close();
context.Response.ContentType = "text/xml;charset=utf-8";
context.Response.Write(utf.GetString(arr).Trim());
context.Response.Flush();
}
#endregion
}
public class Note
{
public string Name { get; set; }
public string Place { get; set; }
public string State { get; set; }
}
您可以将收到的 xml 字符串传递给我正在执行的操作 context.Response.Write('Pass you XML data here');
你必须使用你最喜欢的 JavaScript 库和一个树形小部件来以树形形式显示 XML。
请注意,您看到的“树状”视图实际上是 IE 对 XML 文件的默认视图。 其他浏览器对于 XML 文件会有不同的视图,有些甚至不让你在没有插件的情况下查看 XML 文件。
如果以树形形式查看 XML 对您的页面功能很重要,则不应依赖于特定于浏览器的功能。
但是,如果您只想按下一个按钮,然后整个页面变成 XML,那么无论如何只需在按下按钮时重定向到该 XML URI。 IE 将以树形形式显示 XML 文件,而其他浏览器可能会要求您下载该文件,或以由其插件确定的任何格式显示 XML 文件。
我在 src 属性中设置了 xml 数据:
iframeElement.setAttribute('src', 'data:text/xml,<test>data</test>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.