Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在纯ABAP中根据XSD验证XML_Xml_Xsd_Abap_Xml Validation - Fatal编程技术网

在纯ABAP中根据XSD验证XML

在纯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执行XML文档验证是否有任何标准方法?据我所知,有一种方法利用了XI/PI功能,但这些功能在我们的系统中不可用

我认为我们也可以使用一种变通方法:制作独立的JavaRFC或任何其他语言的web服务,从SAP获取XML和XSD,执行验证并将结果返回给SAP;但这可能是更复杂、更不可靠的解决方案

你遇到过类似的任务吗?你是如何解决的?
如有任何建议、意见甚至澄清问题,我们将不胜感激

将此报告用于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运行验证,因此这也是一个有效的选项。