【问题标题】:How to use gSOAP to validate xml against xsd如何使用 gSOAP 针对 xsd 验证 xml
【发布时间】:2013-11-14 13:31:36
【问题描述】:

我面临以下关于使用 gSOAP 进行 xml 验证的问题:

我使用 wsdl2h 从我的 xsd 生成头文件,并使用 soapcpp2 从该头文件生成 C 源代码。在我的程序中使用生成的源代码,我可以编写一个 xml 文件。

有没有办法在生成之后/生成期间根据 xsd 验证生成的 xml 文件?

谢谢, 弗洛尔

【问题讨论】:

    标签: xml xsd xsd-validation gsoap


    【解决方案1】:

    生成的 XML 结构将根据 gsoap 工具设计(数据绑定和序列化)的 XSD 有效,但在某些情况下,您必须注意元素和属性出现约束的特定 XSD 要求。这些包含在生成的 .h 文件中,并与结构/类成员关联为范围信息 min:max。因此,在这种情况下,请在 wsdl2h 生成的 .h 文件中查找记录的出现约束(minOccurs、maxOccurs 等)以确定如何填充 C/C++ 数据以进行 XML 序列化。几乎所有其他事情都由类型映射算法自动完成。

    【讨论】:

    • 从我的 .xsd 生成的 .h 文件包含约束注释,如 gSOAP User Guide : Chap. 17 XML Validation 中所述。使用带有标志 -s 和 -c 以及 `soap_set_imode(&soap, SOAP_XML_STRICT); 的 soapcpp2在我的代码中,我仍然能够生成一个不适合 .xsd 的 xml 文件(例如通过故意违反发生约束)而不会出现任何 SOAP 错误。不应该出现Chap. 10.2 Error Codes中提到的错误代码之一吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多