[英]Google App Script: extract data from a XML file
我需要将此XML结构提取到Google电子表格中,
<directory>
<fieldset>
<field id="displayName">Display name</field>
<field id="firstName">First name</field>
</fieldset>
<employees>
<employee id="200">
<field id="displayName">Donald Duck</field>
<field id="firstName">Donald</field>
</employee>
</employees>
</directory>
我已经删除了所有<field id>
,但是我只需要<employee id>
,我不知道该怎么做,对不起,我对XML没有任何了解,所以请帮助我。
function ImportXML() {
var url = "https://api.Fake.com/employees/directory";
var response = UrlFetchApp.fetch(url, params);
var xml = response.getContentText();
var doc = XmlService.parse(xml);
var root = doc.getRootElement();
logChildren(doc.getRootElement().getChildren());
function logChildren(elements){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
for (var i = 0; i < elements.length; i++) {
var range = sheet.getRange(1,i+1);
range.setValue(elements[i].getText());
if(elements[i].getContentSize() > 1){
var children = elements[i].getChildren();
logChildren(children);
}
}
}
谢谢你的帮助。
有关使用appscript读取特定节点的信息,请查阅此文档
getChild(名称)
获取具有给定名称且没有名称空间的第一个Element节点,该名称空间是此Element节点的直接子级。 如果没有这样的节点,则此方法返回null。
参量
名称类型说明name字符串子元素的名称元素节点返回
Element — Element节点;如果不存在具有给定名称且没有名称空间的直接子Element节点,则为null
使用此工作示例作为指导。
function readSpecificNode() {
var url = 'https://www.w3schools.com/xml/books.xml';
var xml = UrlFetchApp.fetch(url).getContentText();
var document = XmlService.parse(xml);
var entries = document.getRootElement().getChild('book').getChild('title').getAttribute('lang').getValue();
Logger.log(entries);
}
只是不要忘记将url
更改为指定的xml,并将getChild
元素从“ book”,“ title”和“ lang”更改为“ directory”,“ employees”,“ employee”,然后将getAttribute
设置为“ id”,将适合您所需的输出。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.