用Java将XSD转换为树结构

用Java将XSD转换为树结构,java,xsd,Java,Xsd,我想为XML模式生成文档 我的目标是分析xsd文件并将其显示为树结构(解析所有复杂/匿名类型)。此外,我需要用它们的基数(由模式定义)来注释树中的所有项 下面的小例子可能有助于澄清我的问题 a) xsd文件: <?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xs:element name="client" type=

我想为XML模式生成文档

我的目标是分析xsd文件并将其显示为树结构(解析所有复杂/匿名类型)。此外,我需要用它们的基数(由模式定义)来注释树中的所有项

下面的小例子可能有助于澄清我的问题

a) xsd文件:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="client" type="clientType" />
    <xs:complexType name="clientType">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="first_name"/>
            <xs:element name="last_name"/>
            <xs:element name="address" type="addressType" 
                        minOccurs="1" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="addressType">
        <xs:sequence>
            <xs:element name="street"/>
            <xs:element name="number" minOccurs="0" maxOccurs="1"/>
            <xs:element name="city"/>
            <xs:element name="zipcode"/>
        </xs:sequence>
    </xs:complexType>
</xs:schema>

有人知道这个问题的基于java的解决方案吗?最好是基于,但我也很乐意使用其他库

鉴于XSD模式也是XML,您可以将其作为XML进行处理,从而为您提供了许多选择

我的首选是使用XSLT样式表和模板来匹配元素和复杂类型元素以获得输出列表,并使用进一步的模板来匹配minOccurs和maxOccurs属性以获得基数


实现这一点的Stylsheet示例可能已经在线提供。

可以将XSD规范化为可理解的数据结构,您可以循环并打印出来。

尽管没有合适的解决方案,但我建议如下:使用能够基于XSD生成示例XML实例的工具,例如EclipseIDE(因为它是开源的,所以应该可以提取相关代码并在独立的解决方案中使用)。这个XML应该非常接近您所需要的树结构。然后,解析XSD并用基数注释生成的XML结构中的元素。

如何使用XSLT解析匿名/复杂类型的内容?你有这方面的例子吗?
client [1]
  first_name [1]
  last_name [1]
  address [1..n]
    street [1]
    number [0..1]
    city [1]
    zipcode [1]