2012-02-20 143 views
4

我试图用JAXB解析Google-Maps XML响应。通过谷歌提供的XSD文件将非常好。任何人都知道从哪里得到它?Google Maps API V3,响应的XSD XML

如果没有现有的XSD可言,任何人都知道这是为什么谷歌不会正式提供这种模式?同时他们自己也可能使用这个文件。

感谢, user1146450

回答

3

这是相当我的猜测是有你在找什么没有正式XSD;原因是API文档的编写方式,特别是它带有一个首选的处理模型,对于XML响应是基于XPath的。

谷歌的XML也是一个传统的Web服务不是典型的使用WSDL + XSD组合描述;它缺少XML名称空间,违反了WS-I Basic Profile规则R1014。

至于为什么,我认为你的问题有可能获得对这个问题的相当个人观点,除非你很幸运能从一个内部人那里得到答案......在这一点上,我将立即删除我的答案......直到那么,这是我对使用XSD的时机可能不太明智的观点。如果将会有一个只有纯XML处理堆栈可用于开发的世界(例如XML,XSLT等,XML设备如Datapower,论坛,第7层等),那么我会考虑不在其中提供几乎是“犯罪”的XML模式(XSD或其他)。

如果在强类型语言,比如Java和C#扔了,然后一个人失去了很多的灵活性,XML的带来的表。 XSD被用作促进这些“绑定”技术的主要工件;它既有助于采用XML,又阻碍了我所称的基于XML的处理模型,其中Google的XPath就是其中之一。

如果语义与锚定的XPath,然后改变到现有的XML结构,根据需要,以适应新的功能,不应该的问题对现有的处理器。但是这正是JAXB和.NET绑定阻塞的地方......为了减轻这一点,人们开始使用XSD功能,对于普通开发人员来说太复杂了,或者构建了描述非常抽象模型的XSD。所以,现在,一个开始有较高的燃烧速率试图支持所有这一切......

它可能会证明,简单的结构,它可能是从一个角度的支持更便宜跳过XSD一起;大多数人(无论如何)都希望看到一个示例XML来理解XSD的全部内容。如果规范所有者决定在他/她认为合适的任何地方添加新标签,那么没有人会因为基于XPath的数据提取永远不会受到这种更改而哭泣;尝试使用XSD来做这样的事情,是不可能的或非常丑陋的...

而在谷歌的情况下,如果大部分是针对浏览器,为什么要麻烦回答“我如何使用JavaScript验证XML?”......没有人希望服务器端应用程序每次需要为XML添加新标签时,都会发生巨大的崩溃...对于那些认为xsd通配符是答案的人,我认为它不总是可行的(参见UPA),或者它影响XSD易读性,或者它实际上会带来良好的XmlNode回图片...

概括起来,我认为XSD +(你的语言在这里)代码绑定,从长远来看,造成了更多的麻烦和就业;) - 比其他任何事情!

+0

谢谢你的综合分析/答案,你是对的,我会接受这个答案,如果它会不会被回答“正式“在短时间内。我觉得Google试图以简单的方式编写文档,但我不知道为什么,经过几次点击后,我总是被引导到EXIT ......幸运的是,我终于发现了一些我想通过顽强的尝试来阅读的内容,认为象我这样的男人不应该像这样受伤--__ – rekinyz 2012-02-21 11:35:08

+0

@ user1146450,只是为了确保,我不是故意暗示你试图使用JAXB的方法是错误的,当然,即使是开玩笑,我也绝不会使用“imbecilic”加词... – 2012-02-21 13:32:12

+0

不,我不是说你的回答让我觉得很愚蠢,但Google的文档确实如此。也许这太简单了,相信这些都是开发人员应该知道的,所以我试图找到XSD架构或其他东西......无论如何,再次感谢您的启发'_' – rekinyz 2012-02-21 15:31:41

0

我认为这会对你有帮助。它显示了如何使用XPath在谷歌地图API https://developers.google.com/maps/documentation/webservices/index#ParsingXML

+0

虽然这个链接可能回答这个问题,但最好是包括答案的重要部分[这里](http://meta.stackoverflow.com/a/8259)并提供链接供参考。如果链接页面更改,则仅链接答案可能会失效。 – bummi 2014-12-11 21:17:10

-2

(例如) 使用XML可以从地理编码查询接收XML,然后将其粘贴到网上的XML XSD的创造者。最后,你需要编辑结果来匹配不同的响应(我必须添加目标命名空间和minOccurs =“0”maxOccurs =“unbounded”到元素以匹配多个位置)。

你应该得到这样的事情(XSD对于上面的例子)

`https://pastebin.com/iV6w41ye`