Обработка 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());
        }
}

но выпадает в ошибку, похоже что разные типы данных. Что я ни так делаю


Ответы (0 шт):