使用XmlService将自定义字符串解析为XML文档

时间:2017-08-23 23:52:40

标签: javascript xml google-apps-script

我在使用XmlService.parse()的过程中继续收到相同的错误我自己用来作为POST发送到Web服务的自定义字符串(建议的建议或建议也将非常感谢)。 我将包含该代码以供参考。我在List类型的字符串中创建了一个元素,这是最令人费解的(第1行的错误:对于与元素类型“List”相关联的属性“Name”,打开引号。(第67行,文件“Code”))。谢谢!

    function createXml() {
  var ss = SpreadsheetApp.openById("ID"),
    activeSheet = ss.getActiveSheet(),
    refDatasrc = ss.getSheetByName("Student"),
    refDataRange = refDatasrc.getDataRange(),
    values = refDataRange.getValues();
  var xmlst = '<?xml version="1.0" encoding="utf-8"?><List Name=GS Test" Department="First Department"><Columns><Rows>';

  for (var i = 0; i < values.length; i++) {
    if (i < 1) {
      var xmlCol = '<c>' + values[0][0] + '</c>' +
        '<c>' + values[0][1] + '</c>' +
        '<c>' + values[0][2] + '</c>' +
        '<c>' + values[0][3] + '</c>' +
        '<c>' + values[0][4] + '</c>' +
        '<c>' + values[0][5] + '</c>' +
        '<c>' + values[0][6] + '</c>' +
        '<c>' + values[0][7] + '</c>' +
        '<c>' + values[0][8] + '</c>' +
        '<c>' + values[0][9] + '</c>' +
        '<c>' + values[0][10] + '</c>' +
        '<c>' + values[0][11] + '</c>' +
        '<c>' + values[0][12] + '</c>' +
        '<c>' + values[0][13] + '</c>' +
        '<c>' + values[0][14] + '</c></Columns><Rows>';
      xmlst += xmlCol;
    } else {
      var xmlRows = '<r><v>' + values[i][0] + '</v>' +
        '<v>' + values[i][1] + '</v>' +
        '<v>' + values[i][2] + '</v>' +
        '<v>' + values[i][3] + '</v>' +
        '<v>' + values[i][4] + '</v>' +
        '<v>' + values[i][5] + '</v>' +
        '<v>' + values[i][6] + '</v>' +
        '<v>' + values[i][7] + '</v>' +
        '<v>' + values[i][8] + '</v>' +
        '<v>' + values[i][9] + '</v>' +
        '<v>' + values[i][10] + '</v>' +
        '<v>' + values[i][11] + '</v>' +
        '<v>' + values[i][12] + '</v>' +
        '<v>' + values[i][13] + '</v>' +
        '<v>' + values[i][14] + '</v></r>';
      xmlst += xmlRows;
    }
  }
  xmlst += '</Rows></List>';
  Logger.log(xmlst + '\n\n\n\n');
  var document = XmlService.parse(xmlst);
  var output = XmlService.getCompactFormat().format(document);
  Logger.log(output);
  //   var document = XmlService.createDocument(root);
  //   var xml = XmlService.getPrettyFormat().format(document);
  //   Logger.log('\n\n\n\n' + xml);
}

1 个答案:

答案 0 :(得分:1)

如何修改?

修改要点:

  1. 对于var xmlst = '<?xml version="1.0" encoding="utf-8"?><List Name=GS Test" Department="First Department"><Columns><Rows>';,请从Name=GS Test"修改为Name="GS Test"。这就是错误的原因。
  2. 在您的脚本中,元素类型为<List><Columns><Rows></Columns><Rows></Rows></List>为此,请从<List><Columns><Rows></Columns><Rows></Rows></List>修改为<List><Columns></Columns><Rows></Rows></List>
  3. 修改后的脚本:

    function createXml() {
      var ss = SpreadsheetApp.openById("ID"),
        activeSheet = ss.getActiveSheet(),
        refDatasrc = ss.getSheetByName("Student"),
        refDataRange = refDatasrc.getDataRange(),
        values = refDataRange.getValues();
      var xmlst = '<?xml version="1.0" encoding="utf-8"?><List Name="GS Test" Department="First Department"><Columns>';
    
      for (var i = 0; i < values.length; i++) {
        if (i < 1) {
          var xmlCol = '<c>' + values[0][0] + '</c>' +
            '<c>' + values[0][1] + '</c>' +
            '<c>' + values[0][2] + '</c>' +
            '<c>' + values[0][3] + '</c>' +
            '<c>' + values[0][4] + '</c>' +
            '<c>' + values[0][5] + '</c>' +
            '<c>' + values[0][6] + '</c>' +
            '<c>' + values[0][7] + '</c>' +
            '<c>' + values[0][8] + '</c>' +
            '<c>' + values[0][9] + '</c>' +
            '<c>' + values[0][10] + '</c>' +
            '<c>' + values[0][11] + '</c>' +
            '<c>' + values[0][12] + '</c>' +
            '<c>' + values[0][13] + '</c>' +
            '<c>' + values[0][14] + '</c></Columns><Rows>';
          xmlst += xmlCol;
        } else {
          var xmlRows = '<r><v>' + values[i][0] + '</v>' +
            '<v>' + values[i][1] + '</v>' +
            '<v>' + values[i][2] + '</v>' +
            '<v>' + values[i][3] + '</v>' +
            '<v>' + values[i][4] + '</v>' +
            '<v>' + values[i][5] + '</v>' +
            '<v>' + values[i][6] + '</v>' +
            '<v>' + values[i][7] + '</v>' +
            '<v>' + values[i][8] + '</v>' +
            '<v>' + values[i][9] + '</v>' +
            '<v>' + values[i][10] + '</v>' +
            '<v>' + values[i][11] + '</v>' +
            '<v>' + values[i][12] + '</v>' +
            '<v>' + values[i][13] + '</v>' +
            '<v>' + values[i][14] + '</v></r>';
          xmlst += xmlRows;
        }
      }
      xmlst += '</Rows></List>';
      Logger.log(xmlst + '\n\n\n\n');
      var document = XmlService.parse(xmlst);
      var output = XmlService.getCompactFormat().format(document);
      Logger.log(output);
      //   var document = XmlService.createDocument(root);
      //   var xml = XmlService.getPrettyFormat().format(document);
      //   Logger.log('\n\n\n\n' + xml);
    }
    

    如果我误解了你的问题,我很抱歉。