cannot insert new XML node with DOM parser



I've encountered with a strange issue


shortly, here is the XML that I'd like to add a new person node



<persons>
<person name="name1" surname="surname1" />
<person name="name2" surname="surname2" />
<person name="name3" surname="surname3" />
<person name="name4" surname="surname4" />
<person name="name5" surname="surname5" />
</persons>


Here is my Android code:



DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(personsFile);
doc.getDocumentElement().normalize();

Element persons = doc.getDocumentElement();

Element personNode = doc.createElement("person");

personNode.setAttribute("name", "name6");
personNode.setAttribute("surname", "surname6");

persons.appendChild(personNode);

Transformer tf = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(personsFile);
tf.transform(source, result);


But the new node is not inserted completely, I receive this



<persons>
<person name="name1" surname="surname1" />
<person name="name2" surname="surname2" />
<person name="name3" surname="surname3" />
<person name="name4" surname="surname4" />
<person name="name5" surname="surname5" />
<person na


For this version of code (no attributes set):



DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(personsFile);
doc.getDocumentElement().normalize();

Element persons = doc.getDocumentElement();

Element personNode = doc.createElement("person");

//personNode.setAttribute("name", "name6");
//personNode.setAttribute("surname", "surname6");

persons.appendChild(personNode);

Transformer tf = TransformerFactory.newInstance().newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(personsFile);
tf.transform(source, result);


I receive the following XML



<persons>
<person name="name1" surname="surname1" />
<person name="name2" surname="surname2" />
<person name="name3" surname="surname3" />
<person name="name4" surname="surname4" />
<person name="name5" surname="surname5" />
<person/><


i.e. just like in the first case, it can't save beyond a certain border,


I can't understand the issue, On the pad I used previously, this perfectly worked, now I'm using Sony Xperia


EDIT. Tried to save into another file and it worked, but still can't understand why the DOM tree is not saved in the original file


No comments:

Post a Comment