2012-02-15 88 views
1

我想存儲一個XML文檔sessionStorage。當我這樣做時,它似乎可以保存爲XMLDocument。當我嘗試訪問它時(刷新頁面),該對象將以[object Object]而不是[object XMLDocument]返回。HTML5 sessionStorage和XMLDocument

如何擺脫sessionStorageXMLDocument數據(或者將其轉換爲一個?)

+0

你嘗試新的XmlDocument(對象)? – unludo 2012-02-15 13:00:22

+0

@FelixKling如何從(jQuery)xml轉換爲字符串,然後再返回? – Chris 2012-02-15 13:03:04

回答

2

localStoragesessionStorage只能容納字符串。看看interface 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()'是一種可能的方法。 – alex 2012-02-15 13:04:47

+0

如何序列化我的XML(使用jQuery)到字符串? – Chris 2012-02-15 13:05:01

+0

@alex:可能不適用於XMLDocument。我假定它是循環引用。但對於「普通物體」,你是對的。 – 2012-02-15 13:07:09

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"); 
相關問題