使用Javascript为Chrome扩展程序解析XML输出?

时间:2011-06-01 18:28:16

标签: javascript xml google-chrome google-chrome-extension xmlhttprequest

哇,是的,疯狂的头衔。

但严重的是,我有一点困境,我正在尝试使用chrome扩展,它只是从服务器上的脚本中获取XML输出并以令人愉悦的方式显示它。

这是XML结果

<foo>
<level>3</level>
<message>
No Additional Information
</message>
</foo>

基本上我需要做的就是为每个级别放置一个条件语句并显示消息。然而,我似乎只是让XHR工作有问题。

我的清单文件确实拥有XML文件及其托管的整个域的权限(目前用于调试目的)。

自从我使用javascript以来,已经过了很长时间,事情发生了巨大的变化。对于我为Firefox完成的扩展工作而言,我也没有任何帮助。

有什么想法吗?

编辑:

为了澄清我对我需要的if语句没问题,实际上启动XHR应该没问题,我的问题是操纵XML文件中的数据。

1 个答案:

答案 0 :(得分:1)

使用XmlHttpRequest(XHR)获取XML文件时,可以使用responseXML指定对请求的响应。响应将被解析,就像它是text / xml流一样。

responseXML的结果是DOM Document对象。您可以在文档。*下使用任何JavaScript API,例如document.getElementByIddocument.querySelector等。它们都在上面的文档链接中定义。

如果responseXML返回null,则表示服务器没有抛出正确的mimetype。您可以使用overrideMimeType before calling send()`。

覆盖mimetype

例如

(同步XHR,您也可以通过指定onreadystatechange来执行异步):

var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/db.xml');
xhr.overrideMimeType('text/xml');
xhr.send(null)

var root = xhr.responseXML;
var someidDOM = root.getElementById('someid');

请记住,为了实现这一点,您应该将该代码放在Background Page中,并授予permission访问该资源的权限。您可以使用的match patterns可以是网址:

{
  // Required
  "name": "My Extension",
  "version": "1.0",

  "background_page": "background.html",
  "permissions": [ "http://example.com/db.xml" ]
}

希望这有助于您开始使用!