2010-02-20 68 views
13

我需要讀取序列化爲XMI的UML圖。是否有任何庫可以讓我方便地閱讀UML XMI - 我的意思是說有一些方法可以遍歷模型中的類/包/方法/屬性等。如何閱讀XMI?

我試過EMF,但是我找不到任何教程來展示如何導入包含UML的XMI。我還發現NSUML/NSMDF,但文檔鏈接已中斷。

回答

4

我不認爲你想要什麼存在。我所知的所有導入XMI的工具(包括我的XMI轉換服務:http://modeling-languages.com/content/xmi2-tool-exchanging-uml-models-among-case-tools)通過解析整個XMI文件並在主內存中創建相應的UML模型來工作。然後你可以通過查詢模型來訪問UML元素。

,反覆的XMI模型,你可以很容易地使用XML庫選擇XMI文件中,您有興趣的部分。

1

ArgoUML可以將XMI導入到它的UML模型並生成Java,C++,C#,PHP4和PHP5的代碼。

0

爲了使用EMF讀取XMI/UML,您需要爲UML查找,生成或編寫ECore模型。一旦你擁有其中的一個,就可以生成用於操作UML的內存類,並利用其他EMF基礎結構。

但更簡單的路線可能是使用由Eclipse MDT project開發的UML2基礎架構。 (我的猜測是它在引擎蓋下使用了EMF,並且在那裏有UML2的ECore模型。)

+0

UML2項目建立在EMF之上是正確的。 – ChrisH

0

你要找的是Java specification for JMI(「Java元數據接口」),這實現用於描述傳送元數據的元數據和XMI的MOF。

不幸的是,我目前正在尋找自己的JMI實現和太陽JMI頁面似乎有點過時。 Netbeans的開放源代碼實施版本6似乎已被刪除。

2

它取決於您試圖讀取的UML版本。您發現的NSUML包僅適用於UML 1.3。 NetBeans MetaData Repository(MDR)將讀取句柄UML 1.4和UML 1.5。它可以用作獨立庫(這是ArgoUML使用的),因此您不需要NetBeans。對於UML 2.x,我認爲Eclipse EMF & UML2庫是你唯一的選擇。 EMF是一個依賴項,但它確實是你想要的UML2的東西。與MDR和NetBeans一樣,您不需要Eclipse。 ArgoUML使用Eclipse庫來支持其UML 2.x。