2016-03-29 7 views
1

Ich möchte die Möglichkeit, Zeilen in einem Google Spreadsheet zu aktualisieren, zu meiner Webanwendung hinzufügen. Sieht aus wie Google Sheets API ist der Weg zu gehen. Es ist ein RESTful Web Service, der hauptsächlich XML-basiert ist. Ich möchte die XML-Anfragen und -Antworten als Java-Objekte modellieren (unmarshal/marshal via JAXB). Ich kann jedoch keine WADL- oder XSD-Dateien finden, die sie beschreiben. Existieren sie? Gibt es eine kluge Möglichkeit, sie zu entdecken?Modellierung von XML-Anfragen und -Antworten für die Google Tabellen-API?

Wenn sie nicht existieren, was ist eine gute Möglichkeit, sie zu generieren? Führen Sie Beispiel-XML-Antworten über ein xml-to-xsd-Tool aus, und lassen Sie dann JAXB die Java-Klassen erstellen?

Hinweis: Google stellt eine Java-Clientbibliothek zur Verfügung, aber ich möchte vermeiden, dass weitere Abhängigkeiten in das Projekt eingefügt werden. Meine Anwendungsfälle scheinen einfach genug zu sein, um sie nicht zu benötigen.

Antwort

0

Nach viel Graben, konnte ich keine WADL/XSD-Dateien finden, die den Dienst, Anfragen und Antworten beschreiben. Der nächstgelegene Fund war die Entdeckung von Google Tabellen. Die API basiert auf dem Atom-Feed-Format (http://www.w3.org/2005/Atom). Aber das Laufen seines XSD über JAXB erzeugte so viel zusätzliches Zeug, dass ich diese Route aufgegeben habe.

Ich schrieb eine einfache XSD, um meine Java XML-Modellanforderungen zu erfüllen. Diese Modelle waren genug, um Zeilen in einem Arbeitsblatt lesen und hinzufügen/aktualisieren zu können.

<?xml version="1.0" encoding="UTF-8"?> 
<xs:schema attributeFormDefault="unqualified" 
    elementFormDefault="qualified" 
    targetNamespace="http://www.w3.org/2005/Atom" 
    xmlns="http://www.w3.org/2005/Atom" 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:gsx="http://schemas.google.com/spreadsheets/2006/extended" 
    xmlns:jaxb="http://java.sun.com/xml/ns/jaxb" 
    jaxb:version="2.1"> 

<xs:element name="feed"> 
    <xs:annotation> 
     <xs:appinfo> 
      <jaxb:class name="GoogleSheetFeed" /> 
     </xs:appinfo> 
    </xs:annotation> 
    <xs:complexType> 
     <xs:sequence> 
      <xs:element name="id" type="xs:string" /> 
      <xs:element name="title" type="xs:string" /> 
      <xs:element maxOccurs="unbounded" name="entry" type="GoogleSheetFeedEntry" /> 
     </xs:sequence> 
    </xs:complexType> 
</xs:element> 

<xs:element name="entry" type="GoogleSheetFeedEntry" /> 

<xs:complexType name="GoogleSheetFeedEntry"> 
    <xs:sequence> 
     <xs:element name="id" type="xs:string" /> 
     <xs:element name="title" type="xs:string" /> 
     <xs:element maxOccurs="unbounded" name="link"> 
      <xs:complexType> 
       <xs:attribute name="href" type="xs:string" /> 
       <xs:attribute name="rel" type="xs:string" /> 
       <xs:attribute name="type" type="xs:string" /> 
      </xs:complexType> 
     </xs:element> 
     <xs:any namespace="##other" minOccurs="0" maxOccurs="unbounded" processContents="lax"/> 
    </xs:sequence> 
</xs:complexType> 

</xs:schema> 
Verwandte Themen