有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案

  1. # 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验证并不是那么容易,一开始确实需要很多努力。一旦你准备好了测试工具,它就会变得简单多了