【问题标题】:HTML5 sessionStorage and XMLDocumentHTML5 sessionStorage 和 XMLDocument
【发布时间】:2012-03-06 19:42:16
【问题描述】:

我想在sessionStorage 中存储一个XML 文档。当我这样做时,它似乎可以保存为XMLDocument。当我尝试访问它时(在页面刷新时),对象返回为[object Object],而不是[object XMLDocument]

如何将sessionStorage 中的数据作为XMLDocument 获取(或将其转换为一个?)

【问题讨论】:

  • 你尝试新的 XMLDOcument(object) 了吗?
  • @FelixKling 如何将 (jQuery) xml 转换为字符串,然后再转换回来?

标签: javascript html sessionstorage


【解决方案1】:

您可能希望在将 XMLDocument 保存到存储之前对其进行序列化:

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

然后在从存储中加载数据后反序列化:

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

【讨论】:

  • 但是新的 XMLSerializer().serializeToString(originalDom);没有将孩子完全转换成正确的字符串。
【解决方案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()解析。

【讨论】:

  • JSON.stringify() 是一种可能的方法。
  • 如何将我的 XML(使用 jQuery)序列化为字符串?
  • @alex:可能不适用于 XMLDocument。我认为它是循环引用。但是对于“普通对象”,您是对的。
  • 谢谢,但是如何将 jQuery XML 文档转换为 XMLDocument?
  • 你应该看看文档。那里声明jQuery.parseXML() 返回一个XMLDocument
猜你喜欢
  • 2012-08-02
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 2013-07-26
  • 1970-01-01
  • 1970-01-01
  • 2012-01-19
相关资源
最近更新 更多