Проблемы с получением детей. Разбор 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.

Наслаждайся, Джеймс

Другие вопросы по тегам