Разобрать вывод XML с помощью Javascript для расширения Chrome? - PullRequest
1 голос
/ 01 июня 2011

Ух ты, да сумасшедший титул.

А если серьезно, у меня небольшая дилемма, я пытаюсь работать над расширением chrome, которое очень просто берет вывод XML из скрипта на сервере и отображает его в приятной манере.

вот результат XML

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

По сути, все, что мне нужно сделать, это поставить условное выражение для каждого уровня и отобразить сообщение. Однако, похоже, у меня проблемы с тем, чтобы заставить XHR работать вообще.

Мой файл манифеста имеет разрешения для файла XML и всего домена, из которого он размещен (в настоящее время для целей отладки).

Прошло много лет с тех пор, как я работал с javascript, и все кардинально изменилось. Также не помогает то, что я пишу расширение, написанное для Firefox, чтобы выполнить работу.

Есть мысли?

Edit:

Чтобы уточнить, что я в порядке с необходимыми инструкциями if, и на самом деле инициирование XHR должно быть в порядке, моя проблема заключается в манипулировании данными из файла XML.

1 Ответ

1 голос
/ 04 июня 2011

Когда вы извлекаете ваш XML-файл, используя XmlHttpRequest (XHR), вы можете указать, каким будет ответ на запрос при использовании responseXML.Ответ будет проанализирован так, как если бы он был потоком text / xml.

Результатом responseXML будет объект DOM Document .Вы можете использовать любой JavaScript API в документе. *, Например, document.getElementById, document.querySelector и т. Д. Все они определены в ссылке на документ выше.

Если ваш responseXML возвращает ноль, это означает, что серверне выбрасывает правильный mimetype.Вы можете переопределить mimetype с помощью overrideMimeType before calling send () `.

Например,

(Синхронный 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');

Помните, чтобы это работало, вы должны поместить этот код на Фоновую страницу и дать разрешение для доступа к этому ресурсу. шаблонами соответствия , которые вы можете использовать, может быть сам URL:

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

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

Надеюсь, это поможет вам начать!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...