Как извлечь значение из XML-ответа AtomPub XML в Javascript (для API настроек администратора Служб Google)

Я звоню в API настроек администратора Служб Google из сценария Google Apps Script (Javascript), чтобы узнать максимальное количество пользователей в нашем домене Служб Google.

Успешный запрос GET возвращает ответ в формате AtomPub XML, например:

<?xml version='1.0' encoding='UTF-8'?>
<entry xmlns='http://www.w3.org/2005/Atom' xmlns:apps='http://schemas.google.com/apps/2006'>
<id>https://apps-apis.google.com/a/feeds/domain/2.0/domain.com/general/maximumNumberOfUsers</id>
<updated>2014-07-16T00:55:27.837Z</updated>
<link rel='self' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/domain/2.0/domain.com/general/maximumNumberOfUsers'/>
<link rel='edit' type='application/atom+xml' href='https://apps-apis.google.com/a/feeds/domain/2.0/domain.com/general/maximumNumberOfUsers'/>
<apps:property name='maximumNumberOfUsers' value='100'/></entry>

Значение свойства MaximumNumberOfUsers (в данном случае это 100) - единственная часть, о которой я забочусь.

Как извлечь это значение, чтобы я мог присвоить его целочисленной переменной?

Моим первым инстинктом было написать сумасшедшее сложное регулярное выражение, но я ЗНАЮ, что должен быть более легкий путь!

Я думаю, что есть способ сделать это с помощью JQuery, но нет способа использовать jQuery в Google Apps Script.

1 ответ

Решение

Прочитайте этот предыдущий ответ. Не нужно писать сумасшедшие регулярные выражения... просто воспользуйтесь той утилитой, которая напрямую работает со структурой xml!

Вот непроверенный кусок кода, который использует getElementByVal() Функция из этого ответа:

...
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
var entries = document.getRootElement().getChildren('entry', atom);

var maxUsers = getElementByVal( entries, 'property', 'name', 'maximumNumberOfUsers' );
                    .getAttribute(value);
...
Другие вопросы по тегам