为 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>
我想在我的网络应用程序中添加更新 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>