我知道由于安全限制,我无法将XML内容保存到本地文件中。但是,是否有一种方法可以在另一个浏览器窗口中显示XML内容?
但它并没有显示完整的XML内容,只显示了内部节点值。新窗口仍然显示“连接中...”,好像没有完成加载内容(缺少关闭标签???)。也许我需要告诉它这是XML内容而不是HTML?我的xmlString:
显示的内容:
Window.Open(xmlString, . .. );
这将与“-”起到相同的作用。
Window.Open(URL, . . .);
- 我不能使用服务器端语言。
- 我可以使用javascript \ jQuery。(我已经使用它们创建了XML)
- 我可以有一个模板XML文件,放在我的HTML附近。有没有办法显示模板文件并更改其内容?几乎与window.open: is it possible open a new window with modify its DOM或How to write JavaScript to a separate window?相同,但我需要更改XML节点,而不是HTML。
编辑1:尝试使用myXmlWindow.document.write(xmlString)
=> 我尝试了建议的代码 -
var xmlString = xml2Str(xmlDocument);
myXmlWindow = window.open();
myXmlWindow.document.write(xmlString);
myXmlWindow.focus();
但它并没有显示完整的XML内容,只显示了内部节点值。新窗口仍然显示“连接中...”,好像没有完成加载内容(缺少关闭标签???)。也许我需要告诉它这是XML内容而不是HTML?我的xmlString:
<root><device1>Name</device1><device2/><device3><Temprature_1>23.5</Temprature_1><Temprature_2>23.4</Temprature_2><Temprature_3>23.4</Temprature_3><Temprature_4>23.3</Temprature_4><Temprature_5>23.2</Temprature_5></device3></root>
显示的内容:
Name23.523.423.423.323.2
编辑2:我的代码 -
function xml2Str(xmlNode) {
try {
// Gecko- and Webkit-based browsers (Firefox, Chrome), Opera.
return (new XMLSerializer()).serializeToString(xmlNode);
}
catch (e) {
try {
// Internet Explorer.
return xmlNode.xml;
}
catch (e) {
//Other browsers without XML Serializer
// alert('Xmlserializer not supported');
return('Xmlserializer not supported');
}
}
return false;
}
function fShow_xml_in_win() {
var xmlDocument = $.parseXML("<root/>");
var dev1 = xmlDocument.createElement('device1');
var dev2 = xmlDocument.createElement('device2');
var dev3 = xmlDocument.createElement('device3');
dev1.appendChild(xmlDocument.createTextNode('Name'));
xmlDocument.documentElement.appendChild(dev1);
xmlDocument.documentElement.appendChild(dev2);
xmlDocument.documentElement.appendChild(dev3);
var i;
var xNode;
for (i = 0; i < 5; i++) {
xNode = xmlDocument.createElement('Temprature_' + (i+1));
xNode.appendChild(xmlDocument.createTextNode( "myVal " + ((i+1) * 10) ));
dev3.appendChild(xNode);
}
var xmlString = xml2Str(xmlDocument);
alert(xmlString);
xmlString = "<?xml version='1.0' ?>" + xmlString; // I do not know how to add this node using parseXML :(
alert(xmlString);
myXmlWindow = window.open();
myXmlWindow.document.write(xmlString);
myXmlWindow.document.close(); // !! EDIT 3
myXmlWindow.focus();
return false;
}
编辑3:已解决“连接中...”的问题
我只需要添加myXmlWindow.document.close();