2016-07-11 3 views
1

Hier ist meine XML:Parsen von XML auf einem Google Apps Script

<?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[[email protected]]]></value></column> 
     </record> 
     <record id='2'> 
      <column name="Name"><value><![CDATA[Joe]]></value></column> 
      <column name="Email"><value><![CDATA[[email protected]]]></value></column> 
     </record> 
    </records> 
</response> 

Und hier mein Versuch ist die obige XML und zurück Name und E-Mail als Arrays zu analysieren:

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. 
     } 
    } 
} 

Ich wollte durch https://developers.google.com/apps-script/reference/xml-service/ und konnte nicht herausfinden, wie es zu erreichen ist. Wie kann ich es reparieren?

+0

Sie verwenden hier keine Webanwendung. Dies ist eine Programmierfrage, sollte bei [so] gestellt werden. –

+0

Werden Google-Apps nicht als Web-App betrachtet? Ich verwende Google Apps-Skript. Ich verstehe es nicht. –

+0

Ist die XML-Datei ein Text-Snippet oder befindet sie sich an einem URL-Endpunkt? –

Antwort

0

Wie sei:

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; 
} 

diese Funktion wird ein String-Argument, Ihre XML ist, und gibt eine zweidimensionale Anordnung, wobei jede Reihe des Feldes Namen und E-Mail-Adresse Paare zu sein.

Verwandte Themen