Я работаю над сценарием Google, используя редактор сценариев Google Sheets Script, который собирается проанализировать RSS-канал iTunes.
Я использовал службу XML - документация предоставлена здесь - и это кажется довольно простым, пока я не наткнулся на элементы пространства имен iTunes. Метод для анализа XML-элементов вместе с их пространствами имен, как это предусмотрено Google:
getChildText(name, namespace)
Где параметры name и namespace находятся в строке. Поэтому, следуя предоставленной документации и примерам, я попробовал этот код:
function customScraperRSSFeed() {
var xml = UrlFetchApp.fetch('http://feeds.soundcloud.com/users/soundcloud:users:279094703/sounds.rss').getContentText();
var document = XmlService.parse(xml);
var ituneEntries = document.getRootElement().getChildText('email', 'http://www.itunes.com/dtds/podcast-1.0.dtd');
Logger.log(ituneEntries);
}
Снимок моего кода также можно найти здесь .
Но почему-то, если я запускаю этот код, я получаю следующую ошибку:
Cannot find method getChildText(string,string)
Я знаю, что есть другие методы, включая getChild (name, namespace) , который следует по тому же пути.
Вот теги с пространством имен iTunes, которые я хочу проанализировать .
Платформа не позволяет мне прикреплять изображения напрямую, поэтому, пожалуйста, потерпите меня.
А вот ссылка на полный RSS-канал: http://feeds.soundcloud.com/users/soundcloud:users:279094703/sounds.rss
Теперь я хочу знать, что-то не так с кодом, который я делаю? Я попробовал все варианты, и я даже попробовал это:
var xml = UrlFetchApp.fetch('http://feeds.soundcloud.com/users/soundcloud:users:279094703/sounds.rss').getContentText();
var document = XmlService.parse(xml);
var ituneEntries = document.getRootElement().getChildren('channel');
for(var i=0; i<ituneEntries.length; i++)
{
var name = ituneEntries[i].getName();
if(name=='subtitle')
{
Logger.log(ituneEntries[i].getText());
}
else if(name=='owner')
{
var ownerInformation = ituneEntries[i].getChildren();
Logger.log(ownerInformation[0].getText());
Logger.log(ownerInformation[1].getText());
}
}
Что касается вышеприведенного кода, у меня был план перебрать все элементы по требуемым именам тегов и затем получить их значения, и даже тогда я получал значения NULL для некоторых тегов.
Поэтому, исходя из приведенного выше объяснения проблемы, любая помощь или обходной путь для этой проблемы будут высоко оценены.
Спасибо!