【问题标题】:A tool to generate "model visitor" code from XSD从 XSD 生成“模型访问者”代码的工具
【发布时间】:2012-03-16 03:58:32
【问题描述】:

谁能推荐一些工具来生成代码文件以访问在 XML 模式中定义的模型?

理想情况下,它应该生成一个流式 XML 解析器,该解析器读取输入 XML 并在找到 MyModelElement 后调用诸如 visitMyModelElement() 之类的方法。然后我只需填写空白方法并获得我的“映射器”代码。

这是一个简短的版本,我将尝试描述背景。 我在想我们应该如何处理另一个树到树的映射问题: https://gis.stackexchange.com/questions/1879/how-to-convert-gml-to-features-in-arcobjects

-- 我查看了“最佳实践者的最佳实践”,只是为了回忆如果我们追随他们,某个 BigCustomer 的某个晚上会发生 OutOfMemoryException。周围有比更好的做法更好的做法吗?

(如果我的问题不够清楚,我会写更多信息)

【问题讨论】:

    标签: xml xsd code-generation gml


    【解决方案1】:

    不完全是您问题的答案,但绝对可以在 Java 上使用 JAXB 和 JAXB 插件解决。 JAXB 有一个模式编译器 (XJC),它将 XML 模式编译成带有注释的 Java 类。来自 JAXB 参考实现的 XJC 可以使用插件进行扩展,这些插件可以生成一些额外的代码。我为 XJC 写了a number of plugins,所以我声明生成访问者模式代码没什么大不了的。

    但是,我认为经典的访问者模式在这里不是正确的方法。使用 OGC 模式,您可以轻松地使用数百个而不是数千个“访问”方法,因此它实际上可能无济于事。

    接下来,我真的不确定这是否是您完成核心任务的正确方法。我认为访客不会真正让事情变得轻松,而是让事情变得更麻烦。我会去手动处理未编组的对象。在 .Net 上,我会使用其中一种 XSD 工具来创建 XML/对象映射,然后手动将未编组对象的处理写入 ArcObjects。

    顺便说一下,这是我基于 JAXB 生成的代码实现的 GML parser/serializer。它在 GML 和 JTS 几何之间转换。 (JTS 代表 Java Topology Suite,它是流行的几何 API 之一。) 这与您想要的几乎相同,但适用于 Java/JTS 而不是 .Net/ArcObjects。

    【讨论】:

    • 感谢您的建议。我可能会在这周看看你的解析器/序列化器。
    • 我使用 xsd.exe 生成了静态 C# 类。并得到 1.2 MB 的文件。好的。现在还有另一棵树:ArcObjects 几何模型。制作这个映射看起来是一项艰巨的任务(反之亦然)。因此,我想看看其他人是如何完成这些任务的。
    • 我只是想说'@lexicore 这段代码看起来很聪明,而且我解决了一部分问题。顺便说一句,你认识那个人阿列克谢吗?我想问他一个问题,他是如何管理监督这么多 xsd 模式的。手动还是自动?但只是看了你的个人资料。你就是那个人。对吗?
    • 是的,我就是那个人。我不确定我是否明白了你的问题。我相信你的意思是我的“OGC Schemas and Tools Project”。我并没有真正“管理”这些模式,我只是用 JAXB 编译它们。是的,这是一个相当大的努力。如果您想了解任何具体内容,请随时通过 valikov(#)gmx.net 与我联系。
    • 好的,阿列克谢,我从dashboard 看到了你所说的“相当努力”。我对编译模式不感兴趣,我可以阅读帮助。我有兴趣估计标准更改(新版本)时映射器代码所需的工作量。感谢您的联系,当我有东西要展示给您时,我会与您联系。
    猜你喜欢
    • 2022-10-14
    • 1970-01-01
    • 2011-07-27
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多