解析Google Apps脚本中的XML [英] Parsing XML on a Google Apps script

查看:99
本文介绍了解析Google Apps脚本中的XML的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是我的XML:

 <?xml version =1.0encoding =UTF-8?> 
<回应>
<记录>
< record id ='1'>
< column name =Name>< value><![CDATA [John]]>< / value>< / column>
< column name =Email>< value><![CDATA [john@gmail.com]]>< / value>< / column>
< / record>
< record id ='2'>
< column name =Name>< value><![CDATA [Joe]]>< / value>< / column>
< column name =Email>< value><![CDATA [joe@gmail.com]]>< / value>< / column>
< / record>
< / records>
< / response>

然后,我尝试解析上述XML并将Name和email作为数组返回:

  var document = XmlService.parse(the_above_xml); 
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
var records_all = document.getRootElement()。getChildren('records',atom);
for(r = 0; r var records = records_all [i] .getChildren('record',atom);
for(i = 0; i< records.length; i ++){
columns = records [i] .getChildren('column',atom);
for(c = 0; c< columns.length; c ++){
//我卡在这里。我想返回一个名称和电子邮件的数组。
}
}
}

我正在阅读 https://developers.google.com/apps-script/reference/xml-service/ 并无法弄清楚如何实现它。

解决方案

如何

  function getRecords(xml){
var xmlDoc = XmlService.parse(xml);

var response = xmlDoc.getRootElement();
var records = response.getChild('records');
var recordList = records.getChildren('record');

var output = [];
for(var i = 0,record; record = recordList [i]; i ++){
var columnList = record.getChildren('column');
var name ='';
var email ='';
for(var j = 0,column; column = columnList [j]; j ++){
var attrName = column.getAttribute('name')。getValue();
var text = column.getChild('value')。getText();
if(attrName ==='Name'){
name = text;
} else if(attrName ==='Email'){
email = text;
}
}
output.push([name,email]);
}
返回输出;





这个函数接受一个字符串参数,作为你的XML,二维数组,每个数组的行都是名称和电子邮件地址对。


Here's my XML:

<?xml version="1.0" encoding="UTF-8" ?> 
<response>
    <records>
        <record id='1'>
            <column name="Name"><value><![CDATA[John]]></value></column>
            <column name="Email"><value><![CDATA[john@gmail.com]]></value></column>
        </record>
        <record id='2'>
            <column name="Name"><value><![CDATA[Joe]]></value></column>
            <column name="Email"><value><![CDATA[joe@gmail.com]]></value></column>
        </record>
    </records>
</response>

And, here's my attempt to parse the above XML and return Name and email as arrays:

var document = XmlService.parse(the_above_xml);
var root = document.getRootElement();
var atom = XmlService.getNamespace('http://www.w3.org/2005/Atom');
var records_all = document.getRootElement().getChildren('records', atom);
for (r=0; r<records_all.length; r++){
    var records = records_all[i].getChildren('record', atom);
    for (i=0; i< records.length; i++){
        columns = records[i].getChildren('column', atom);
        for (c=0; c< columns.length; c++){
            // I'm stuck here. I want to return an array of name and emails. 
        }
    }
}

I was going through https://developers.google.com/apps-script/reference/xml-service/ and couldn't figure out how to achieve it. How can I fix it?

解决方案

How about:

function getRecords(xml) {
  var xmlDoc = XmlService.parse(xml);

  var response = xmlDoc.getRootElement();
  var records = response.getChild('records');
  var recordList = records.getChildren('record');

  var output = [];
  for (var i = 0, record; record = recordList[i]; i++) {
    var columnList = record.getChildren('column');
    var name = '';
    var email = '';
    for (var j = 0, column; column = columnList[j]; j++) {
      var attrName = column.getAttribute('name').getValue();
      var text = column.getChild('value').getText();
      if (attrName === 'Name') {
        name = text;
      } else if (attrName === 'Email') {
        email = text;
      }
    }
    output.push([name, email]);
  }
  return output;
}

This function takes a string argument, being your XML, and returns a two-dimensional array, with each row of the array being name and email address pairs.

这篇关于解析Google Apps脚本中的XML的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆