Validation 如何获得Axis/Castor web服务来根据XSD验证请求?
我使用我们组织内另一个团队开发的XSD,以合同优先的自上而下的方式开发了一个小型web服务。我遇到的问题是,如果请求的格式稍有错误,服务仍会运行。我确实需要它来验证针对XSD的请求,但我不知道如何强制Axis或Castor这样做 当我说格式有点不正确时,我的意思是请求包含正确的元素,但顺序不正确。在Castor解组过程中,格式错误的请求将被拒绝。格式稍有错误的请求将被解组,并可能导致不必要的结果。下面是一个例子: 有效请求应包含如下所示的项目列表:Validation 如何获得Axis/Castor web服务来根据XSD验证请求?,validation,xsd,axis,castor,Validation,Xsd,Axis,Castor,我使用我们组织内另一个团队开发的XSD,以合同优先的自上而下的方式开发了一个小型web服务。我遇到的问题是,如果请求的格式稍有错误,服务仍会运行。我确实需要它来验证针对XSD的请求,但我不知道如何强制Axis或Castor这样做 当我说格式有点不正确时,我的意思是请求包含正确的元素,但顺序不正确。在Castor解组过程中,格式错误的请求将被拒绝。格式稍有错误的请求将被解组,并可能导致不必要的结果。下面是一个例子: 有效请求应包含如下所示的项目列表: <ItemList> <
<ItemList>
<Item>Value1</item>
<Item>Value2</item>
<Item>Value3</item>
</ItemList>
<ItemList>
<Item>Value1</item>
<Item>Value2</item>
</ItemList>
<ItemList>
<Item>Value3</item>
</ItemList>
这将正确解组,web服务将处理这三个值
但是,我发现,如果相同的值集是这样表示的:
<ItemList>
<Item>Value1</item>
<Item>Value2</item>
<Item>Value3</item>
</ItemList>
<ItemList>
<Item>Value1</item>
<Item>Value2</item>
</ItemList>
<ItemList>
<Item>Value3</item>
</ItemList>
然后,这也将以与第一个示例相同的方式解组,并将处理所有三个值。在这种情况下,最终结果是可以接受的,但是根据XSD,这种结构是不正确的,我更希望它创建一个错误
以下是取自XSD的请求定义:
<xsd:complexType name="SampleRequestType">
<xsd:sequence>
<xsd:element name="ItemList" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Item" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
SoapUI报告第二个示例无效,因此我确信XSD是正确的
我尝试了一些方法来强制进行XSD验证,到目前为止没有任何效果。有人知道如何强制Axis或Castor进行验证吗
出于历史原因,我正在使用这两个组件的旧版本——Axis1.3和Castor 1.1,但如果我能让XSD验证正常工作,我愿意承受任何升级的痛苦
非常感谢
史蒂夫试试这个链接:
它与Axis1.3相关,涉及使用自定义过滤器和助手类进行验证
至于Castor,他们的网站上有一些与模式验证相关的示例,不确定它们与您的版本有多大的相关性似乎很旧,但可能是升级的原因:
整个内容太大,无法在此处发布,但我发布的链接似乎相当稳定。尝试此链接:
它与Axis1.3相关,涉及使用自定义过滤器和助手类进行验证
至于Castor,他们的网站上有一些与模式验证相关的示例,不确定它们与您的版本有多大的相关性似乎很旧,但可能是升级的原因:
整个内容太大,无法在这里发布,但我发布的链接似乎相当稳定。感谢Petru的回复,并为您的帖子的巨大延迟表示歉意!这是忙碌的一个月,我只是没有时间回到这个问题上。我会浏览一下你提供的链接,看看它会带我去哪里。再次感谢。谢谢你的佩特罗,并为你的帖子被耽搁了太久而道歉!这是忙碌的一个月,我只是没有时间回到这个问题上。我会浏览一下你提供的链接,看看它会带我去哪里。再次感谢。