セキュリティ上の制限により、XMLコンテンツをローカルファイルに保存できないことを理解しています。しかし、XMLコンテンツを別のブラウザウィンドウに表示する方法はありますか?
Window.Open(xmlString, . .. );
それは-と同じように機能します
Window.Open(URL, . . .);
- サーバーサイド言語を使用できません。
- javaScript\jQueryを使用できます。(私はすでにそれらを使用してXMLを作成しています)
- HTMLの近くにテンプレートXMLファイルを作成できます。テンプレートファイルを表示してその内容を変更する方法はありますか?window.openとほぼ同じです。DOMまたはJavaScriptを別のウィンドウに書き込む方法を変更して新しいウィンドウを開くことは可能ですか?ただし、HTMLではなくXMLノードを変更する必要があります。
編集1:myXmlWindow.document.write(xmlString)を使用してみてください
=>提案されたコードを試しました-
var xmlString = xml2Str(xmlDocument);
myXmlWindow = window.open();
myXmlWindow.document.write(xmlString);
myXmlWindow.focus();
ただし、XMLコンテンツ全体は表示されず、インターンノードの値のみが表示されます。コンテンツの読み込みが完了しなかったため、新しいウィンドウには引き続き「接続中...」と表示されます(閉じるタグがありません???)
多分私はそれがHTMLではなくXMLコンテンツであることを伝える必要があります???
私の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();を追加する必要がありました。