Проблемы с получением детей. Разбор XML в скриптах Google
Я делаю пользовательскую функцию для извлечения определения из словаря API в Google Scripts. Я продолжаю сталкиваться с проблемами, которые не позволяют мне схватить детей. Я могу получить Корневой элемент, но после этого... Никаких кубиков.
Xml больше не работает, насколько я могу судить. Нужно использовать XmlService
https://developers.google.com/apps-script/reference/xml-service/
Я хочу выбрать, какое определение тянуть.
DEF_ELEMENTARY ("слово", 1, 1) должен вернуться
": звук или комбинация звуков, которые имеют значение и произносятся человеком"
DEF_ELEMENTARY ("слово",2,1) должен вернуться
": выразить словами:"
Xpath будет что-то вроде этого. Еще не смог проверить это. //entry[0]/def/dt[0]>
function DEF_ELEMANTARY(input, entryIndex, defIndex) {
if (!input) {
input = "test";
}
/* test if they added indexing values. You subtract 1 so the function is more human readable */
if (!entryIndex) {
entryIndex = 0;
} else {
entryIndex = entryIndex - 1
}
if (!defIndex) {
defIndex = 0;
} else {
defIndex = defIndex - 1
}
/*api only accepts lowercase words*/
var word = input.toLowerCase();
var apiKey = "*-*-*-*-*"
var url = "http://www.dictionaryapi.com/api/v1/references/sd2/xml/"+word+"?key="+apiKey
var fetch = UrlFetchApp.fetch(url).getContentText();
var doc = XmlService.parse(fetch);
var root = doc.getRootElement();
var entries = root.getChildren("Entry");
return entries;
/*this is where I get lost. If I do any methods to the entries it says it isn't defined
the editor normally suggests methods and instead of the normal Element methods it is
the generic ones*/
}
Вот XML, который я получаю из URLfetch.
"<?xml version=""1.0"" encoding=""utf-8"" ?>
<entry_list version=""1.0"">
<entry id=""word[1]""><hw hindex=""1"">word</hw><sound><wav>word0001.wav</wav></sound><pr>ˈwərd</pr><fl>noun</fl><def><sn>1</sn><dt>:a sound or combination of sounds that has meaning and is spoken by a human being</dt><sn>2</sn><dt>:a written or printed letter or letters standing for a spoken word</dt><sn>3</sn><dt>:a brief remark or conversation <vi>I'd like a <it>word</it> with you.</vi></dt><sn>4</sn><dt>:<sx>command <sxn>1</sxn></sx> <sx>order</sx> <vimw>We are waiting for the <it>word</it> to begin.</vimw></dt><sn>5</sn><dt>:<sx>news <sxn>1</sxn></sx> <vi>Has there been any <it>word</it> on how they are?</vi></dt><sn>6</sn><dt>:<sx>promise <sxn>1</sxn></sx> <vi>I give you my <it>word</it>.</vi></dt><sn>7</sn><sin><if>words</if> <spl>plural</spl></sin><dt>:remarks said in anger or in a quarrel <vi>We had <it>words</it> yesterday.</vi></dt></def></entry>
<entry id=""word[2]""><hw hindex=""2"">word</hw><sound><wav>word0001.wav</wav></sound><fl>verb</fl><in><if>word*ed</if></in><in><if>word*ing</if></in><def><dt>:to express in words :<sx>phrase</sx> <vimw>I don't know how to <it>word</it> my idea.</vimw></dt></def></entry>
<entry id=""word processing""><hw>word processing</hw><fl>noun</fl><def><dt>:the production of printed documents (as business letters) with automated and usually computerized equipment</dt></def></entry>
<entry id=""word processor""><hw>word processor</hw><fl>noun</fl><def><sn>1</sn><dt>:a computer used for creating, storing, and printing text</dt><sn>2</sn><dt>:software designed to perform word processing</dt></def></entry>
<entry id=""guide word""><hw>guide word</hw><fl>noun</fl><def><dt>:either of the terms at the head of a page of an alphabetical reference work (as a dictionary) usually showing the first and last entries on the page</dt></def></entry>
</entry_list>"
1 ответ
Догадаться. Вам нужно проиндексировать детей, прежде чем вы сможете что-либо сделать.
var entry = root.getChildren("entry")[0];
var def = entry.getChild("def").getChildren("dt")[0].getValue()
И там у вас есть это. Скрипт для определения слова в таблицах Google.
Наслаждайся, Джеймс