Обработка xml Java DOM
Есть XML`ка
<Requests>
<RequestId>f7a469b4-20c5-11ea-ace6-005056b9560b</RequestId>
<Params>
<Name>agrm_number</Name>
<Value>00000000</Value>
</Params>
<Params>
<Name>balance</Name>
<Value>0.15</Value>
</Params>
<Contacts>
<Type>MSISDN</Type>
<Value>0000000000</Value>
</Contacts>
</Requests>
Нужно превратить ее в такую, т.е. создать внутри Requests элемент Request, и переместить все элементы в него.
<Requests>
<Request>
<RequestId>f7a469b4-20c5-11ea-ace6-005056b9560b</RequestId>
<Params>
<Name>agrm_number</Name>
<Value>00000000</Value>
</Params>
<Params>
<Name>balance</Name>
<Value>0.15</Value>
</Params>
<Contacts>
<Type>MSISDN</Type>
<Value>0000000000</Value>
</Contacts>
</Request>
</Requests>
Я пытался вот так:
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
public class mapXML {
public static void main(String[] args) throws Exception {
File fXmlFile = new File("testXML2.xml");
BufferedReader fin = new BufferedReader(new FileReader(fXmlFile));
String line;
while ((line = fin.readLine()) != null) System.out.println(line);
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(fXmlFile);
doc.getDocumentElement().normalize();
System.out.println("==========================");
Element Requests = (Element) doc.getElementsByTagName("Requests").item(0);
Element Request = doc.createElement("Request");
Requests.appendChild(Request);
NodeList RequestsNode = doc.getDocumentElement().getElementsByTagName("Requests");
for (int i = 0; i < RequestsNode.getLength(); i++) {
Node nextNode = RequestsNode.item(i);
Request.appendChild(nextNode);
}
Requests.appendChild(Request);
System.out.println("==========================");
Transformer transformer = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
transformer.transform(source, result);
System.out.println(writer.toString());
}
}
но выпадает в ошибку, похоже что разные типы данных. Что я ни так делаю