Parsen von XML mithilfe von Google Apps Script
Ich Schwierigkeiten beim Parsen der XML-Code aus einer boardgamegeek Abfrage, so dass ich vielleicht füllen Sie eine google-Tabelle mit den Daten. Hier ist ein Beispiel des bgg xml:
<boardgames termsofuse="http://boardgamegeek.com/xmlapi/termsofuse">
<boardgame objectid="423">
<yearpublished>1995</yearpublished>
<minplayers>3</minplayers>
<maxplayers>6</maxplayers>
<playingtime>300</playingtime>
<name primary="true" sortindex="1">1856</name>
</boardgame>
</boardgames>
- Und hier ist Google Apps Script, das ich geschrieben habe, zu analysieren:
//get the data from boardgamegeek
var url = 'http://www.boardgamegeek.com/xmlapi/boardgame/' + bggCode;
var bggXml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(bggXml);
var root = document.getRootElement();
var entries = new Array();
entries = root.getChildren('boardgame');
for (var x = 0; x < entries.length; i++) {
var name = entries[x].getAttribute('name').getValue();
var yearpublished = entries[x].getAttribute('yearpublished').getValue();
var minplayers = entries[x].getAttribute('minplayers').getValue();
var maxplayers = entries[x].getAttribute('maxplayers').getValue();
}
//SpreadsheetApp.getActiveSheet().getRange(i+1,7).setValue(yearpublished);
Logger.log(entries);
Ich bin derzeit immer eine Fehlermeldung in der for-Schleife verursacht durch Einträge NULL. Wenn ich den Kommentar der loop-out-und log-was bggXml aussieht, es sieht genauso aus wie das Beispiel oben. Allerdings logging-Variablen, die weiter unten bekomme ich die folgende:
document => [Document: No DOCTYPE declaration, Root is [Element: <boardgames/>]]
root => [Element: <boardgames/>]
entries => [[Element: <boardgame/>]]
entries[2] => undefined
Da die bggXml sieht genauso aus, wie ich erwarten würde, aber das Dokument nicht, ich nehme an, das problem ist in der Analyse?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nach viel Versuch und Irrtum und stolpern durch die Dunkelheit, fand ich die Lösung, die ich suchte. Diese erhalten den Wert eines einzelnen xml-Elements und legen Sie es auf eine variable:
Also mein letzter code sieht wie folgt aus. Ich hoffe, es hilft Ihnen bei Ihren Bemühungen.
In Fall, dass Sie passieren, auch Abfragen BGG, es gibt mehrere name-Elemente. Ich will das eine mit dem primären Attribut auf "true" gesetzt. Die Iteration durch die Elemente zu finden, die richtige ist, wird meine nächste Herausforderung.