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