在纯ABAP中根据XSD验证XML
在ABAP中使用XSD执行XML文档验证是否有任何标准方法?据我所知,有一种方法利用了XI/PI功能,但这些功能在我们的系统中不可用 我认为我们也可以使用一种变通方法:制作独立的JavaRFC或任何其他语言的web服务,从SAP获取XML和XSD,执行验证并将结果返回给SAP;但这可能是更复杂、更不可靠的解决方案 你遇到过类似的任务吗?你是如何解决的?在纯ABAP中根据XSD验证XML,xml,xsd,abap,xml-validation,Xml,Xsd,Abap,Xml Validation,在ABAP中使用XSD执行XML文档验证是否有任何标准方法?据我所知,有一种方法利用了XI/PI功能,但这些功能在我们的系统中不可用 我认为我们也可以使用一种变通方法:制作独立的JavaRFC或任何其他语言的web服务,从SAP获取XML和XSD,执行验证并将结果返回给SAP;但这可能是更复杂、更不可靠的解决方案 你遇到过类似的任务吗?你是如何解决的? 如有任何建议、意见甚至澄清问题,我们将不胜感激 将此报告用于ABAP中与XSD相关的验证: RPCXMLK0\u验证它也可以通过编程方式启动。万
如有任何建议、意见甚至澄清问题,我们将不胜感激 将此报告用于ABAP中与XSD相关的验证:
RPCXMLK0\u验证
它也可以通过编程方式启动。万一有人来 到目前为止,我在互联网上搜索时发现,ABAP中没有一种本地方法可以根据XSD模式验证XML文档。您最好的选择是DTD 我的代码示例不完整,因此复制和粘贴无法工作,但基本上我所做的是将XSD模式保存在应用程序服务器上,将XML文件保存在临时目录中。我调用java程序并将XML和XSD文件作为参数传递给它 下面是java代码 在ABAP中,您可以调用此命令并传递使用
OPEN DATASET
保存的文件。下面是一个代码示例:
它能工作,但相当慢。与实时服务器相比,我使用的是一台硬件相当普通的计算机,但使用小型XSD和小型XML,每次检查大约需要350毫秒
我不确定将其作为服务或RFC运行是否会提高性能,但如果您愿意,值得一试。据我所知,SAP标准中没有提供类的功能模块/方法。不久前我也找过了,什么也没找到。我想你一定是被一个调用外部服务的想法所困扰了。一个可能的“解决方案”是在应用服务器上使用java来利用xerces和/或将XSD转换为DTD:这使用SAP-GUI在Windows客户端上执行基本的验证,只要我能从源代码获得它。如果不是在Windows服务器上,则不会解决后台作业。OP没有明确要求仅在后台或不使用GUI运行验证,因此这也是一个有效的选项。