如何为Java源代码生成XMI文件?

5
我正在使用Java语言编写程序,该程序以Java源代码作为输入,输出是包含源代码类图的XMI文件。
我已经研究了XMI结构,但我没有找到足够的资源来解释标签的顺序和定义。第一个问题是如何找出标签的顺序和每个标签的定义?例如,“isActive=false”的含义是什么等等?
其次,是否有Java语言中的库或其他任何建议可以帮助我完成这个项目?

你可以根据需要定义XML结构。 - Alpesh Gediya
最好先学习一些基本的XML教程,了解XML基础知识,例如标签、属性、命名空间等。 - Alpesh Gediya
http://www.vogella.com/articles/JAXB/article.html - Kanagavelu Sugumar
我是不是唯一一个认为在这个问题的评论者中,有些人混淆了“XMI”和“XML”的人? - Luke Woodward
我已经学习了XML语言。我正在编写一个程序,用于生成任意源代码(Java语言)的类图。就像StarUML或AgroUML一样,它会创建XMI文件,这是类图的图形描述。现在问题来了,XMI文件的结构应该是怎样的呢? - Bernard
1个回答

3
我认为在XMI中标记顺序并不重要。一般来说,XMI只是定义了如何将MOF映射到XML。因此,如果我正确理解的话,您基本上需要使用Java构建M2模型(=UML),然后使用XMI将其映射到XML(我认为双重间接性是您找不到直接从UML到XMI映射的好资源的原因之一)。
对于许多人来说,示例可能比由各种OMG标准定义的转换规则链更易于理解。因此,我会在我喜欢的UML工具中绘制一个最小的UML示例图,以便查看我感兴趣的导出方面的导出XMI。然后根据需要添加功能...
附注:您可能希望使用Java反射类(包java.lang.reflect)而不是解析Java源代码自己生成XMI(如果您不需要保留方法参数名称)。

2
使用反射会丢失方法的参数名称。这可能是一个问题,也可能不是 - 视情况而定。 - A.H.
@Stefan Haustein,感谢您的回复,但我没有完全理解您的意思。我正在解析Java代码以生成XMI文件。我已经看到了StarUML在Windows上或ArgoUML在Mac上创建的示例。我查找类之间的关系以及它们的内容并生成UML类图。我对Java反射印象深刻,但我能否将其用于我的程序以确定任何源的类图。(程序的输入是任何源代码) - Bernard
@Bernard 你需要编译目标程序才能使用反射。你可以使用javax.tools.JavaCompiler在Java内部进行编译。正如A.H.所指出的那样,这仅适用于您不需要保留方法参数名称的情况。这仍然可能是一种简单的方法,让您开始而无需首先创建自己的Java源代码解析器... - Stefan Haustein

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接