我有一个XML和XSD文件。 XML文件是在tomcat / ubuntu平台上使用Java生成的。
用于系统之间的集成。第二个系统正在使用XSD来验证我的XML,它说我的XML不正确。
我想慢慢修复XML文件,但是有时间问题。他们希望我的XML能够比ASAP更快地使用XSD。
是否有任何可以使用我的XML和XSD的工具/算法。添加不存在的模拟字段。
我想要的: 我还没有正确的XML进入一个方法,并返回XML正确的XSD。
听起来有些测试框架应该能够做到这一点。
请帮忙。
答案 0 :(得分:2)
你所描述的f(invalid XML, target XSD) = valid XML
几乎不可能以通用的方式构建,除了琐碎的XML / XSD之外的任何东西......这可能是(至少)我不知道任何主流工具的原因会做这样的事情......(只是简单地回答了你的问题)。
考虑到可以在XSD中描述相同XML的各种方式,以及可能使无效XML符合的多种方式(有些情况严格来说无法修复)...更准确地找出修复XML所需的模式(假设它们的错误是一致的)并通过自定义脚本应用这些更正(XSLT可能是一个,但我还看到了基于“diffgram”的方法,具体取决于您提供的工具和/或技能。
我自己对这里回复的兴趣......与测试框架(我们有一个,仅在Windows上运行)通常能够从各种数据源中获取测试数据,并从中创建有效的XML这一事实有关。它,基于指定的XSD和某种映射元数据。 “映射元数据”可能包含我上面提到的模式所需的数据......
虽然配置这样的框架可能需要一些时间,这取决于XML / XSD中的复杂性...这里的重点是,除了微不足道之外,测试框架中没有太多“自动化”。
(更新:评论中的模拟/框架方面)
你似乎试图修复一些应该修复别的东西(即模仿)。如果模拟是你需要的,那么我的模拟方法有点不同,只是因为我多年前遇到了同样的问题(甚至在XQuery或XML数据库之类的事情发明之前)。在最简单的设置中,数据驻留在电子表格中;将专有的XML Builder shapes
数据转换为层次集,通过遍历(任意)XSD描述的内容模型引入;数据可以从Excel中提取,从外部数据源查找,默认等等。结果可以是一个或多个XML片段,然后可以使用XSLT或COBOL副本进行转换,并保存为文件或作为一部分流式传输基于TCP / IP的模拟框架(用于Web服务,IMS事务等)
我所描述的这种模拟方法......首先放置“数据”,因为我们意识到可以使用相同的数据/测试用例来测试Web服务,IMS事务,驱动UI自动化测试......或者其他一个人进入企业环境。 “塑造”数据以符合特定规范(XSD,COBOL Copybook,CSV等)是“演示”......因此关注点分离。想象一下,对于我来说,“注入”你似乎缺少的字段并获得新的XML是多么容易......
答案 1 :(得分:1)
这是一项有趣的计算机科学挑战,但难以很好地制定。在某种意义上,问题是微不足道的:如果你有一个文件D不能符合模式S,那么你可以通过替换任何已知符合S的文件V来“修复”D.但这没有用,你到底是什么想要的是一些符合S的文件D',并且在某种意义上与“D”相似;理想情况下,在符合S的所有文档中,您希望使用一些合适的度量标准找到最接近D的文档。
我不知道有关这个问题的任何理论或实践工作,但这听起来很有趣。除非你明天想要答案,否则就算了。