Greasemonkey: использование XPath для получения элементов из удаленного XML-документа - PullRequest
1 голос
/ 12 февраля 2012

То, что я пытаюсь сделать с моим скриптом Greasemonkey:

  • для чтения какого-нибудь удаленного XML-документа;

  • для преобразования его в объект XML;

  • , а затем используйте XPath, чтобы получить элементы внутри него.

Метод getElementsByTagName (TagName) прекрасно работает с моим XML-объектом, но оценивает («выражение XPath») - нет.Какие-либо предложения?Смотрите код ниже:

GM_xmlhttpRequest({
   method: "GET",
   url: "http://www.someserver.com/atom.xml",
   onload: function(response) {
      if (!response.responseXML) { 
         var xmlDoc = new DOMParser().parseFromString(response.responseText, "application/xml"); 
      }

// this section works fine and returns the data of the first <entry>..</entry> 
      var snapEntries = xmlDoc.getElementsByTagName("entry");
          alert (snapEntries[0].data);

// this section doesn't work for unknown reason and returns nothing         
      var snapEntriesXpath = xmlDoc.evaluate("//entry", xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
          alert (snapEntriesXpath.snapshotItem(0).data);
    }
});

1 Ответ

1 голос
/ 13 февраля 2012

IIRC, атрибут .data не будет присутствовать для каждого вида поиска.

Вам вероятно необходимо использовать:

var snapEntriesXpath = xmlDoc.evaluate (
    "//entry//text()", xmlDoc, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);

Но могут возникнуть и другие проблемы.Если этого не происходит, (1) ссылка на точный файл XML;используйте pastebin.com при необходимости.(2) Сообщите, что сообщает консоль ошибок Firefox ( Ctrl Shift J ).

...