我应该读取/写入XML文件以在本地Chrome扩展程序中保存数据吗?

时间:2012-10-06 15:12:10

标签: javascript xml google-chrome file-io google-chrome-extension

我正在编写一个简单的chrome扩展程序。我需要创建将站点URL添加到列表或从列表中读取的功能。

我使用该列表在新标签中打开网站。

我正在寻找一种方法来获取我可以写入的数据文件,并从中读取。我正在考虑使用XML。我读到使用Javascript更改文件内容时出现问题。

XML是否是这种事情的正确选择?

我应该补充说,没有网络服务器,应用程序将在本地运行,因此网站所遇到的问题可能与此不同。

在我写这个问题之前,我尝试了一件事,并开始感到不安全,因为它不起作用。

  • 我创建了一个名为Site.xml的XML文件:

<?xml version="1.0" encoding="utf-8" ?>

    <Sites>
  <site>
    <url>
      http://www.sulamacademy.com/AddMsgForum.asp?FType=273171&SBLang=0&WSUAccess=0&LocSBID=20375
    </url>
  </site>

  <site>
    <url>
      http://www.wow.co.il
    </url>
  </site>

  <site>
    <url>
      http://www.Google.co.il
    </url>
  </site>

  • 我制作了这个脚本来读取他的数据,然后输入html文件。

 function LoadXML() {
            var ajaxObj = new XMLHttpRequest();
            ajaxObj.open('GET', 'Sites.xml', false);
            ajaxObj.send();

        var myXML = ajaxObj.responseXML;
        document.write('<table border="2">');
        var prs = myXML.getElementsByTagName("site");
        for (i = 0; i < prs.length; i++) {
            document.write("<tr><td>");
            document.write(prs[i].getElementsByName("url")[0].childNode[0].nodeValue);
            document.write("</td></tr>");
        }
        document.write("</table");
    }

2 个答案:

答案 0 :(得分:4)

我建议使用“chrome.storage.local”解决此问题。首先参考Google Guide然后关于您的代码。只做两件事:

1)按照这样的顺序存储它们

key: site1 - value: www.example1.com
key: site2 - value: www.example2.com
key: site3 - value: www.example3.com

2)在retreiving时,你应该从“site1”开始迭代,直到不再有:)

答案 1 :(得分:1)

  1. Chrome扩展程序无法写入真实文件系统上的文件(virtual HTML5 filesystem对您来说可能过于复杂)。
  2. 对于本地应用,维护持久设置的最佳方法是使用chrome.storage Chrome 20 + localStorage
  3. 使用localStorage时,需要序列化数据。 JSON比XML更适合。
  4. 在页面加载后切勿使用document.write,因为他将删除文档的先前内容。