Java中的XSD设计问题

Java中的XSD设计问题,java,xml,soap,xsd,Java,Xml,Soap,Xsd,目前,我们的软件通过XML/SOAP与远程web服务交互。我们使用XSD方便地创建发送到远程系统的请求。那很好,而且效果很好。XSD非常棒 但是,它确实会导致创建文档对象的代码块非常长。我想知道是否有人对良好的设计实践提出了建议,以处理这些用于创建请求和处理响应文档的大型代码块 XSD文档对象的要点是将XML创建与客户端分离。然而,我认为facade类可能是每个服务的好主意。我认为这对于创建来说是非常好的,因为可以为facade类提供构建请求文档和发送请求的成分,而无需将客户机耦合到XSD类。我

目前,我们的软件通过XML/SOAP与远程web服务交互。我们使用XSD方便地创建发送到远程系统的请求。那很好,而且效果很好。XSD非常棒

但是,它确实会导致创建文档对象的代码块非常长。我想知道是否有人对良好的设计实践提出了建议,以处理这些用于创建请求和处理响应文档的大型代码块


XSD文档对象的要点是将XML创建与客户端分离。然而,我认为facade类可能是每个服务的好主意。我认为这对于创建来说是非常好的,因为可以为facade类提供构建请求文档和发送请求的成分,而无需将客户机耦合到XSD类。我认为答复文件中出现了一个问题。如果有一个多级响应,那么您最终将创建POJO类来包装XSD类,这似乎是过度杀戮

注意:我是EclipseLink JAXB(MOXy)技术负责人

MOXy是一个JAXB()实现,具有基于XPath的映射扩展。这意味着您可以将更紧凑的对象模型映射到XML。在下面的示例中,一个简单的地址对象映射为以下格式:

上述类对应于以下XML:

<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0" xmlns:ns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
    <Response>
        <Placemark>
            <ns:AddressDetails>
                <ns:Country>
                    <ns:CountryNameCode>US</ns:CountryNameCode>
                    <ns:AdministrativeArea>
                        <ns:AdministrativeAreaName>CA</ns:AdministrativeAreaName>
                        <ns:SubAdministrativeArea>
                            <ns:Locality>
                                <ns:LocalityName>Mountain View</ns:LocalityName>
                                <ns:Thoroughfare>
                                    <ns:ThoroughfareName>1600 Amphitheatre Pkwy</ns:ThoroughfareName>
                                </ns:Thoroughfare>
                                <ns:PostalCode>
                                    <ns:PostalCodeNumber>94043</ns:PostalCodeNumber>
                                </ns:PostalCode>
                            </ns:Locality>
                        </ns:SubAdministrativeArea>
                    </ns:AdministrativeArea>
                </ns:Country>
            </ns:AddressDetails>
        </Placemark>
    </Response>
</kml> 

美国
加利福尼亚州
山景
1600圆形剧场Pkwy
94043
了解更多信息


您不使用JAXB的具体原因是什么?XJC工具将为您创建POJO类…@perp-I am。POJO类“导致创建文档对象的代码块非常长。”EclipseLink JAXB(MOXy)实现有一个XPath映射扩展,可以减少代码块的大小:这是非常好的信息!我将专门研究元数据映射文件。当您有一个不断变化的WSDL时,最好将XML模式与源代码解耦(避免注释)。我认为这将是一个很好的解决方案。
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://earth.google.com/kml/2.0" xmlns:ns="urn:oasis:names:tc:ciq:xsdschema:xAL:2.0">
    <Response>
        <Placemark>
            <ns:AddressDetails>
                <ns:Country>
                    <ns:CountryNameCode>US</ns:CountryNameCode>
                    <ns:AdministrativeArea>
                        <ns:AdministrativeAreaName>CA</ns:AdministrativeAreaName>
                        <ns:SubAdministrativeArea>
                            <ns:Locality>
                                <ns:LocalityName>Mountain View</ns:LocalityName>
                                <ns:Thoroughfare>
                                    <ns:ThoroughfareName>1600 Amphitheatre Pkwy</ns:ThoroughfareName>
                                </ns:Thoroughfare>
                                <ns:PostalCode>
                                    <ns:PostalCodeNumber>94043</ns:PostalCodeNumber>
                                </ns:PostalCode>
                            </ns:Locality>
                        </ns:SubAdministrativeArea>
                    </ns:AdministrativeArea>
                </ns:Country>
            </ns:AddressDetails>
        </Placemark>
    </Response>
</kml>