Java 使用rest-assured创建动态xml负载

Java 使用rest-assured创建动态xml负载,java,rest-assured,Java,Rest Assured,发送前需要使用rest-assured在我的请求正文中设置xml节点 <?xml version="1.0" encoding="UTF-8"?> <shopping> <category type="groceries"> <item> <name></name> <price>10</price> </item>

发送前需要使用rest-assured在我的请求正文中设置xml节点

<?xml version="1.0" encoding="UTF-8"?>
<shopping>
   <category type="groceries">
      <item>
         <name></name>
         <price>10</price>
      </item>
      <item>
         <name>Coffee</name>
         <price>20</price>
      </item>
   </category>
   <category type="supplies">
      <item>
         <name>Paper</name>
         <price>5</price>
      </item>
      <item quantity="4">
         <name>Pens</name>
         <price>15</price>
      </item>
   </category>
   <category type="present">
      <item when="Aug 10">
         <name>Kathryn's Birthday</name>
         <price>200</price>
      </item>
   </category>
</shopping>

10
咖啡
20
纸张
5.
钢笔
15
凯瑟琳的生日
200
在发送请求之前,我需要设置“name”

  <item>
     <name></name>
     <price>10</price>
  </item>

10

有人能帮我设置吗?

您可以使用XmlSlurper库或jackson(fasterxml)库来完成这项工作

您可以使用Java类来完成这项工作,而无需添加新的依赖项

这是我的方法

DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();

//In my case - I have namespaces
factory.setNamespaceAware(true);

DocumentBuilder builder = factory.newDocumentBuilder();
Document myXml = builder.parse(new InputSource(new FileInputStream(PATH_TO_MY_XML)));

//Again - I have namespaces so I using this declaration
NodeList node = myXml.getDocumentElement().getElementsByTagNameNS("http://www.testsite.com/common", "site");
node.item(0).setTextContent("MY_SITE_NAME");

StringWriter writer = new StringWriter();
Transformer transformer = TransformerFactory.newInstance().newTransformer();

transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
transformer.setOutputProperty(OutputKeys.INDENT, "yes");
transformer.setOutputProperty(OutputKeys.METHOD, "xml");
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");

//Transform and save to a string
transformer.transform(new DOMSource(myXml), new StreamResult(writer));
String resultXml = writer.toString();
然后只需将resultXml字符串作为参数发送给Rest-Assuredbody(resultXml)方法。 如果您使用的是RequestSpecBuilder,则将其放在setBody(resultXml)方法中