簡體   English   中英

在Google Apps腳本中為BGG API解析XML

[英]Parsing XML in Google Apps Script for BGG API

我目前正在嘗試從BGG xml API中獲取有關Boardgames的信息。 流程是這樣的:

用戶輸入棋盤游戲名稱作為搜索->

腳本會輪詢api以查找與該名稱匹配的游戲,並返回結果->

用戶選擇正確的結果->

腳本從選擇的結果中獲取棋盤游戲ID,然后使用提供所有所需信息的ID再次輪詢api。

這是我正在處理的代碼:

var Name = "Betrayal at the house on the hill"

  // Call BGG API with query to display options for selection
  var response = UrlFetchApp.fetch("https://boardgamegeek.com/xmlapi/search?search="+Name)

  // Parse the XML reply
  var document = XmlService.parse(response);
  var root = document.getRootElement();

這是我從搜索中收到的輸出:

<boardgames termsofuse="[https://boardgamegeek.com/xmlapi/termsofuse](https://boardgamegeek.com/xmlapi/termsofuse)">
        <boardgame objectid="238032">

        <name primary="true">Betrayal at Baldur\&#039;s Gate and House on the Hill Promo Cards</name>           
<yearpublished>2017</yearpublished>
</boardgame>

        <boardgame objectid="10547">

        <name primary="true">Betrayal at House on the Hill</name>           
<yearpublished>2004</yearpublished>
</boardgame>

        <boardgame objectid="198452">

        <name primary="true">Betrayal at House on the Hill: Widow\&#039;s Walk</name>           
<yearpublished>2016</yearpublished>
</boardgame>

</boardgames>\

我可以在那里處理其他所有事情。 我遇到的問題是,桌游的ID包裝在xml標簽<boardgame objectid="xxxxxx"> ,而我不知道如何獲取腳本來訪問該信息。 查看日志中的輸出時,我可以看到ID,但是我不知道如何將ID提取到變量中。 我基本上沒有xml經驗,因此可以肯定,這就是為什么我無法弄清楚看起來很簡單的東西的原因。 我在Google工作表(基本上是JavaScript)上使用了Google Apps腳本。

我發現是一篇幫助我入門的帖子,但是他的用例似乎不需要ID。 可悲的是。

任何想法或建議將不勝感激!

Zedyn在reddit上回答了我的問題。 提取ID所需的代碼如下:

var document = XmlService.parse(bggXml);
var root = document.getRootElement();
var games = root.getChildren('boardgame');

for (var i = 0; i < games.length; i++) {
    var id = games[i].getAttribute('objectid').getValue();
    // do something with id
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM