根据关联的XML模式定义(XSD)验证REST有效负载

时间:2015-03-04 20:05:36

标签: xml web-services rest xsd xml-validation

如何根据模式定义验证REST有效负载(xml)?

XSD应该至少定义什么?

为XML中的剩余有效负载提供xsds是一个好习惯,这样消费者可以在打电话之前验证这些xsds吗?

1 个答案:

答案 0 :(得分:0)

所以,如果你用Java标记它,你可能会获得更多的答案,但是基于这篇文章(Validating XML against XSD (你想要这样的东西:

static boolean validateAgainstXSD(InputStream xml, InputStream xsd)
{
  try
  {
    SchemaFactory factory = 
        SchemaFactory.newInstance(XMLConstants.W3C_XML_SCHEMA_NS_URI);
    Schema schema = factory.newSchema(new StreamSource(xsd));
    Validator validator = schema.newValidator();
    validator.validate(new StreamSource(xml));
    return true;
  }
  catch(Exception ex)
  {
    return false;
  }
}

您的XSD应该定义XML文档中的所有元素,属性和记录,以及它们发生的频率以及它们是否可以最小化。我不知道使用REST提供WSDL的定义明确的方法,但您可能会考虑通过您的接口进行一些API调用,它基本上提供了您为消费者使用的WSDL / XSD。

说到这一点,为什么不使用基于SOAP的接口呢? REST很棒并且有它的位置,但听起来你正在寻找具有强大类型和契约的消息传递协议 - 这就是SOAP更适合的。