我的问题如下: 在我的javascript中,我从服务器加载XML文档。
var xmlDom = document.implementation.createDocument("","",null);
xmlDom.async=false;
xmlDom.load("init.xml");
然后,用户可以通过编辑显示的网页的各种表单元素来修改此XML文档。完成后,我想打开一个新的浏览器选项卡并在其中显示修改后的xml,以便用户可以保存它。问题是如何在不将xmlDocument发送到服务器并返回的情况下执行此操作。我当前的hack在页面上没有显示任何内容,但至少在页面源中显示了xml。
xmlWindow = window.open("");
xmlWindow.document.open("text/xml");
xmlWindow.document.write(serializer.serializeToString(xmlDom));
xmlWindow.document.close();
xmlWindow.focus();
有人知道如何正确地做到这一点吗?
答案 0 :(得分:1)
您需要对XML进行HTML编码才能显示。使用< for<,> for>等。使用pre
标记进行环绕,或将其作为document.createTextNode(data)中的数据。
您还可以在新窗口中的文档中创建文本区域,并将XML字符串放在textarea中。
更多信息in this SO question。
答案 1 :(得分:1)
终于找到了一种方法来获得我想要的东西(至少对于非ie浏览器而言)。我使用的是所谓的DataUri,它可以将XML Document作为链接呈现。单击该链接会导致浏览器处理数据,就像我从服务器加载数据一样。例如,处理xsl-stylesheets。 这是我正在使用的(jQuery)代码:
$('#xmllink')。attr('href','data:text / xml,'+ xml2Str(xmlDom).replace(/“/ gi,”'“));
函数xml2str将xml Document序列化为string。