2012-02-15 3 views
1

Я хочу сохранить XML-документ в sessionStorage. Когда я делаю это, он, похоже, сохраняет ok XMLDocument. Когда я пытаюсь получить к нему доступ (при обновлении страницы), объект возвращается как [object Object], а не [object XMLDocument].HTML5 sessionStorage и XMLDocument

Как я могу получить данные из sessionStorage как XMLDocument (или преобразовать его в один?)

+0

Пробовали ли вы новый XMLDOCUMENT (объект)? – unludo

+0

@FelixKling Как преобразовать из (jQuery) xml в строку и затем снова? – Chris

ответ

2

localStorage и sessionStorage может содержать только строки. Посмотрите на 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

+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"); 

 Смежные вопросы

  • Нет связанных вопросов^_^