3

セキュリティ上の制限により、XMLコンテンツをローカルファイルに保存できないことを理解しています。しかし、XMLコンテンツを別のブラウザウィンドウに表示する方法はありますか?

Window.Open(xmlString, . .. );

それは-と同じように機能します

Window.Open(URL, . . .);

編集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();を追加する必要がありました。

4

2 に答える 2

1

You can open a blank window and then write content to it as follows:

myWindow=window.open('','','width=200,height=100')
myWindow.document.write(xmlString);
myWindow.focus()

You may need to do some work to format your xmlString, but I think this approach will do what you want. If your xmlString is formatted, try adding:

<?xml version="1.0" ?>

to the start of your string.

于 2013-03-12T09:36:30.737 に答える
0

あなたの投稿からの私の理解は、

1.(あなたの最初のポイントから)あなたのコントロールではないどこかからxmlを取得します。私の提案は、なぜJSONとして取得しないのですか?

2.(2 点目より)もしその XML があなたによって作成されたのなら、その XML を参照から作成しようとしないのはなぜですか? 例えば:

 var reference = window.open();
 reference.document.write(<some string goes here>)

3.(3 点目より) 2 点目のご理解のとおりです。xml を作成できます。では、なぜドキュメントを書いた後に変更するのですか?

注: 通常、XML はサーバーからサーバーへの通信に使用され、JSON はサーバーからクライアント (ブラウザー) への通信に使用されます。

于 2013-03-12T09:40:51.347 に答える