2012-02-15 13 views
1

XML文書をsessionStorageに保存します。私はこれを行うとOKをXMLDocumentとして保存するようです。私はそれにアクセスしようとすると(ページの更新時に)[object XMLDocument]とは対照的にオブジェクトがに戻ってきます。HTML5 sessionStorageとXMLDocument

にはどうすればXMLDocumentとしてsessionStorageのうちデータを取得する(または1つに変換?)ない文字列のみを保持することができます

+0

あなたが新しいのXmlDocument(オブジェクト)をしようとしましたか? – unludo

+0

@FelixKling(jQuery)xmlをStringに変換してから、もう一度変換するにはどうすればよいですか? – Chris

答えて

2

localStoragesessionStorageinterface definitionを見て:

interface Storage { 
    readonly attribute unsigned long length; 
    [IndexGetter] DOMString key(in unsigned long index); 
    [NameGetter] DOMString getItem(in DOMString key); 
    [NameSetter] void setItem(in DOMString key, in DOMString data); 
    [NameDeleter] void removeItem(in DOMString key); 
    void clear(); 
}; 

あなたがそれらをシリアル化しない限り、あなたがオブジェクトを格納することはできません。あなたの場合は、serialize it to XMLにする必要があります。

XML文書をテキストとして受け取った場合は、そのまま保存してください。検索後には、jQuery.parseXML()を使用して解析することができます。

+0

'JSON.stringify()'が可能なメソッドの1つです。 – alex

+0

XML(jQueryを使用)をStringにシリアル化するにはどうすればよいですか? – Chris

+0

@alex:おそらくXMLDocumentでは動作しません。私はそれを循環参照と見なします。しかし、 "普通の物"の場合、あなたは正しいです。 –

2

あなたはストレージに保存する前のXMLDocumentをシリアライズすることもできます。その後、

var xml = new XMLSerializer().serializeToString(originalDom); 
sessionStorage.setItem("myDocument", xml); 

とストレージからデータをロードした後にアンシリアライズ:

var xml = sessionStorage.getItem("myDocument"); 
var restoredDom = new DOMParser().parseFromString(xml, "text/xml");