如何使用javascript显示XML Document对象?

时间:2011-02-25 12:11:47

标签: javascript xml dom

我的问题如下: 在我的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();

有人知道如何正确地做到这一点吗?

2 个答案:

答案 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。