有人可以建议一些工具为访问XML模式中定义的模型生成代码文件吗?
理想情况下,它应该生成一个流XML解析器,它读取输入XML并在找到MyModelElement后调用visitMyModelElement()等方法。然后我只填写空白方法并将使用我的“映射器”代码。
这是一个简短的版本,我将尝试描述背景。 我在想如何处理另一个树到树的映射问题: https://gis.stackexchange.com/questions/1879/how-to-convert-gml-to-features-in-arcobjects
- 我看了一下“最佳实践者的最佳实践”,只是为了回忆起一些BigCustomer的OutOfMemoryException会在我们追踪它们的时候发生。是不是有更好的做法?
(如果我的问题不够明确,我会写更多信息)
答案 0 :(得分:2)
不完全是你的问题的答案,但它肯定可以通过JAXB和JAXB插件在Java上解决。 JAXB有一个模式编译器(XJC),它使用注释将XML模式编译为Java类。来自JAXB参考实现的XJC可以使用插件进行扩展,这些插件可以生成一些额外的代码。我为XJC写了a number of plugins,所以我说生成访问者模式代码并不是什么大问题。
但是我不认为这里的经典访客模式是正确的方法。使用OGC模式,如果没有数千个“访问”方法,您可以轻松地使用几个hundres,因此它可能实际上没有帮助。
接下来,我真的不确定这是否是您的核心任务的正确方法。我认为访客不会真正放松一些东西,但会让他们变得麻烦。我会去手动处理未编组的对象。在.Net上,我使用其中一个XSD工具创建XML / Object映射,然后手动将解组对象的处理写入ArcObjects。
顺便说一句,这是我基于JAXB生成的代码实现的GML parser/serializer。它在GML和JTS几何之间进行转换。 (JTS代表Java拓扑套件,是几何的流行API之一。) 这几乎与您想要的一样,但对于Java / JTS而不是.Net / ArcObjects。