为 Google 工作表 API 建模 XML 请求和响应?

Modeling XML requests and responses for Google Sheets API?

我想在我的网络应用程序中添加更新 Google 电子表格中的行的功能。看起来 Google Sheets API 是正确的选择。这是一个主要由 XML 驱动的 RESTful 网络服务。我想将 XML 请求和响应建模为 Java 对象(unmarshal/marshal 通过 JAXB)。但是,我找不到任何描述它们的 WADL 或 XSD 文件。它们存在吗?有没有聪明的方法来发现它们?

如果它们不存在,生成它们的好方法是什么? 运行 通过 xml-to-xsd 工具对 xml 响应进行采样,然后让 JAXB 创建 Java 类?

注意:Google 提供了一个 Java 客户端库,但我想避免在项目中引入更多依赖项。我的用例看起来很简单,不需要它。

经过大量挖掘,我找不到任何 WADL/XSD 描述服务、请求和响应的文件。最近的发现是 Google Sheets API 基于 Atom 提要格式 (http://www.w3.org/2005/Atom)。但是 运行 它的 XSD 通过 JAXB 生成了太多额外的东西,我放弃了那条路线。

我写了一个简单的XSD来满足我的JavaXML模型需求。这些模型足以读取工作表中的 add/update 行。

<?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>