java 使用XSD生成表单(和XML结果)

x33g5p2x  于 2023-02-07  发布在  Java
关注(0)|答案(2)|浏览(160)

这篇文章JSON展示了如何使用Java Metawidget从JSON模式创建一个JSON。我想对XSD(如果需要的话还有XML)做完全相同的事情。
元小部件文档介绍了很多关于XMLInspectors的内容,但是经过一些试验和错误之后,我还没有得到结果(我没有找到任何例子)。你们中的任何人有任何想法,如果和如何整个事情的工作与元部件?如果这不应该与元部件,我也愿意考虑Metawidget的替代方案,我想动态创建表单,这意味着在运行时表单应该从传递的xsd创建(s),然后从其中生成XML(在java中)。

7rfyedvj

7rfyedvj1#

在一般情况下,处理原始XSD文档并不容易,因为有太多的特性,如命名模型组、替换组和由扩展派生的类型,这使得它变得复杂。如果您确实需要从XSD架构中提取信息,我建议使用架构处理器,它允许您通过某些API访问编译后的信息。例如,Saxon可以将编译后的架构输出为.SCM文件。其比原始形式更容易处理。

qij5mzcb

qij5mzcb2#

元窗口部件已经有了一个XmlSchemaInspector,它可以满足您的需要。
除此之外,Java Metawidget的内部检查格式已经是XML(尽管是XML的String,以避免依赖性)。

<inspection-result xmlns="http://metawidget.org/inspection-result" version="1.0">
    <entity type="com.myapp.Person">
        <property name="name" required="true"/>
        <property name="age" minimum-value="0"/>
    </entity>
</inspection-result>

因此,您需要创建自己的Inspector,它读取您自己的XML格式,并将其操作为上述格式,然后将其作为String返回。
检查XML文件,BaseXmlInspector可以帮助打开和遍历XML文件,以及将多个XML文件合并为一个(例如合并多个HibernateMap文件)。
它还允许您将解析后的XML作为Map来使用,这会更容易一些,并为您完成转换。

protected Map<String, String> inspectProperty( Element toInspect ) {

    if ( !"field".equals( toInspect.getNodeName() ) )
        return null;

    Map<String, String> attributes = CollectionUtils.newHashMap();
    attributes.put( NAME, toInspect.getAttribute( getNameAttribute() ) );
    attributes.put( TYPE, toInspect.getAttribute( getTypeAttribute() ) );
    return attributes;
}

相关问题