0

我正在尝试通过文档的键获取特定文档。我按照这里的说明操作:https ://code.google.com/apis/spreadsheets/data/3.0/reference.html#ConstructingURIs

我从 URL 获取密钥:https ://spreadsheets.google.com/ccc?key=0Aoz...mcmc&hl=en#gid=0

URL feedUrl = new URL("https://spreadsheets.google.com/feeds/spreadsheets/private/full/0Aoz...mcmc");
SpreadsheetFeed feed = _service.getFeed(feedUrl, SpreadsheetFeed.class);
_entry = feed.getEntries().get(0);

它给了我以下例外:

Exception in thread "main" com.google.gdata.util.ParseException: [Line 1, Column 165]
Invalid root element, expected (namespace uri:local name) of (http://www.w3.org/2005/Atom:feed),
    found (http://www.w3.org/2005/Atom:entry

这个例外并没有多大意义。我猜它希望标签成为根,但它正在获取 . 如果我转到我正在使用的 URL,feedUrl那么我会得到我想要的 XML 文档(具有我想要的文档的名称和所有名称)。我看不出我在这里做错了什么,我在网上找不到任何可以帮助我的东西。

有人看到我做错了什么吗?

4

2 回答 2

1

对于返回 feedtypes,feedUrl 应该是“https://spreadsheets.google.com/feeds/spreadsheets/private/full/”

于 2011-08-23T10:09:37.677 回答
0

我知道这是一项令人讨厌的 hack 工作,但是因为找不到任何其他解决方案,我最终下载了 com.google.gdata.wireformats.input.AtomDataParser 的源代码,创建了一个 Reader 对象包装器,将预期的标签注入到流中它正在解析。我在 AtomDataParser 代码中更改了这一行:

feedResult.parseAtom(inProps.getExtensionProfile(), inputReader);

到:

if(feedResult instanceof SpreadsheetFeed) {
    feedResult.parseAtom(inProps.getExtensionProfile(), new utils.ReaderWrapper(inputReader));
} else {
    feedResult.parseAtom(inProps.getExtensionProfile(), inputReader);
}

如果您曾经将 SpreadsheetFeed 与任何其他 URL 一起使用,这显然不起作用,但它适用于我正在做的事情。

于 2011-01-24T17:10:05.810 回答