json在Java中验证RESTful服务的XML响应的好方法是什么?
我正在用Java执行简单的RESTFUL服务API验证
以JSON格式处理响应非常方便。使用组织。json库,很容易将json字符串从RESTFUL响应转换为json对象,并将其与预期的json字符串进行比较
JSONObject response = new JSONObject(json_response_str);
JSONObject expected = new JSONObject(json_expected_str);
JSONAssert.assertEquals(expected, response, JSONCompareMode.LENIENT);
如果需要比较的是JSON响应的某个元素,这也很容易,因为使用如下API可以很容易地从JSONObject中提取子元素:
JSONObject element_in_response = response.get("..."); or
JSONObject element_in_response = response.getJSONObject("...");
然而,要处理XML格式的响应,事情就更难了。为了将整个XML响应与预期的XML进行比较,我可以使用XMLUnit:
String xml_response_str = ...
String xml_expected_str = ...
assertXMLEquals(xml_response_str, xml_expected_str);
然而,没有像JSON中那样的XMLProject
那么,如果要将XML响应的某些元素与预期值进行比较,该怎么办
我在搜索论坛上看到过,有时会提到JAXB。我检查了一下,它是关于将XML解析为Java对象的。那么,我应该解析响应XML字符串和期望的XML字符串,然后将元素提取为Java对象,然后比较它们吗?这似乎很复杂,更不用说我首先需要XML模式了
实现这一点的有效方法是什么?有没有像JSON那样方便的方法
谢谢
# 1 楼答案
测试XML有多种方法。将XML转换为JSON不是其中之一,但可以完成
测试XML通常使用XPath风格的比较来执行,这种比较侧重于元素、属性和内容,而不是比较块
通过查看代码,您已经熟悉了http://xmlunit.sourceforge.net/api/org/custommonkey/xmlunit/XMLAssert.htm中的XML断言,但您可能还想看看http://www.w3schools.com/xsl/xpath_intro.asp
XML验证并不是那么容易,一开始确实需要很多努力。一旦你准备好了测试工具,它就会变得简单多了