[英]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\'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\'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.