2012-02-26 101 views
1

「模型先生」代碼任何人都可以提出一些工具來生成訪問XML模式定義的模型代碼文件的工具嗎?產生從XSD

理想情況下,應該產生一個流的XML解析器讀取XML輸入和調用的方法,如visitMyModelElement()一旦發現MyModelElement。然後,我只需填充空白方法,並將有我的「映射器」代碼。

這是一個短版,我會嘗試描述的背景。 我在想,我們應該如何對待另一種樹,以樹映射問題: https://gis.stackexchange.com/questions/1879/how-to-convert-gml-to-features-in-arcobjects

- 我看了一下「最好的practicioners的最佳做法」的一些夜間只是記得,OutOfMemoryException異常在一些BigCustomer如果我們追隨他們,將會發生。有沒有更好的做法?

(我會寫更多的信息,如果我的問題是不夠清楚)

回答

2

不完全的回答你的問題,但它肯定是solveable關於Java用JAXB加JAXB插件。 JAXB有一個模式編譯器(XJC),它將XML模式編譯成帶有註釋的Java類。來自JAXB參考實現的XJC可以通過插件來擴展,這些插件可以生成一些額外的代碼。我爲XJC寫了a number of plugins,所以我想說生成訪問者模式代碼並不是什麼大問題。

不過,我不認爲一個經典訪問者模式是一種正確的做法在這裏。使用OGC模式時,如果不是成千上萬的「訪問」方法,您可以輕鬆登陸多個hundres,因此實際上可能無法幫助您。

接下來,我真的不知道,如果這是你的核心任務是正確的做法。我認爲訪客不會真的放鬆一些事情,但會讓他們變得煩瑣。我會去手動處理unmarshalled對象。在.NET上我會使用的XSD工具來創建XML /對象映射,然後手工編寫的解組對象的加工成的ArcObjects。

順便說一句,這裏有一個GML parser/serializer我基於JAXB生成的代碼實現。它在GML和JTS幾何之間轉換。 (JTS代表Java拓撲套件,流行的API幾何形狀之一。) 這幾乎是你希望同樣的事情,但對Java/JTS而不是淨/ ArcObjects的。

+0

謝謝你的建議。我會在本週看看你的解析器/序列化器。 – 2012-02-27 06:41:23

+0

我用xsd.exe生成了靜態C#類。並獲得1.2 MB的文件。尼斯。現在還有另一棵樹:ArcObjects幾何模型。做這個映射看起來相當艱鉅(而且也相反)。因此我想檢查其他人是如何做這樣的任務的。 – 2012-02-27 06:43:41

+0

我只想說'@lexicore這個代碼看起來很聰明,善良的一部分問題已經解決了。 btw你知道那個阿列克謝嗎?我想問他一個問題,他如何管理監督如此多的xsd-schemas。手動還是自動?「。但只是看着你的個人資料。你是那個人。對? – 2012-02-27 20:39:03