如何阅读XMI?

我需要阅读序列化为XMI的UML图。 是否有任何库可以让我方便地阅读UML XMI – 方便的是我有一些方法来迭代模型中的类/包/方法/属性等。

我尝试了EMF,但是我找不到任何可以显示如何导入包含UML的XMI的教程。 我也找到了NSUML / NSMDF但是文档链接已经破了。

我不认为你想要什么。 导入我知道的XMI的所有工具(包括我的XMI转换服务: http : //modeling-languages.com/content/xmi2-tool-exchanging-uml-models-among-case-tools )通过解析整个XMI文件来工作在主内存中创建相应的UML模型。 然后,您可以通过查询模型来访问UML元素。

要迭代XMI模型,您可以轻松使用XML库来选择您感兴趣的XMI文件的各个部分。

也许只是简单地看看将XMI转换为HTML 。 这应该可以帮助您开始使用XSLT和XMI。

这取决于您尝试阅读的UML版本。 您找到的NSUML包仅适用于UML 1.3。 NetBeans元数据存储库 (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.

ArgoUML可以将XMI导入其UML模型,并为Java,C ++,C#,PHP4和PHP5生成代码。

要使用EMF读取XMI / UML,您需要为UML查找,生成或编写ECore模型。 一旦有了其中之一,就可以生成内存类来操作UML并利用其他EMF基础结构。

但更简单的方法可能是使用Eclipse MDT项目开发的UML2基础结构。 (我的猜测是它在引擎盖下使用EMF,并且某处有UML2的ECore模型。)

您正在寻找的是JMI的Java规范 (“Java元数据接口”),它实现了用于描述元数据的MOF和用于传输元数据的XMI。

不幸的是,我目前正在寻找JMI的实现,而且太阳JMI页面似乎有点过时了。 对于版本6,netbeans的开源实现似乎已被删除。