2012-02-20 140 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`