输出XMLSerializer().serializeToString到用户可保存文本窗口的字符串

Outputting XMLSerializer().serializeToString String to User Savable Text Window

本文关键字:文本 可保存 窗口 字符串 用户 XMLSerializer serializeToString 输出      更新时间:2023-09-26

我目前使用以下代码来显示来自部分DOM的XML代码。

var sXML = new XMLSerializer().serializeToString(document.getElementsByTagName("TopElementOfBlockOfInterest")[0]);
var win;
var doc;
win = window.open("", "", "",false);
doc = win.document;
doc.open("text/plain");
doc.write(sXML);
doc.close();

我看到的是XML代码。但是,当我在Firefox 20.0上选择"另存为"时,保存的是一个html文件。是否有一种方法可以在用户保存XML代码到文件的形式中显示XML字符串?现在的方式是,用户可以复制和粘贴,但我更喜欢更传统的保存操作。

将其转换为数据uri,然后打开

var uri = new XMLSerializer().serializeToString( // serialise
        document.getElementsByTagName("TopElementOfBlockOfInterest")[0]
    ),
    win;
uri = 'data:text/plain,' + window.encodeURIComponent(uri); // to data URI
win = window.open(uri, '_blank'); // open new window

savea 现在默认为.txt。当您实际显示XML内容时,您可能还希望使用MIME text/xmlapplication/xml,但是在浏览器中查看时,这可能会呈现而不是显示为纯文本。