我需要阅读序列化为 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 文件片段。
也许只是看看Transforming XMI to 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 实现,而 suns JMI 页面似乎有点过时了。netbeans 的开源实现似乎已在版本 6 中被删除。