Pourquoi je reçois toujours cette erreur.J'essaie d'ajouter des données au fichier xml existant.J'ai lu here la réponse et essayé ce qui a été suggéré. Mais toujours pas de succès.Je sais que cette erreur signifie que l'élément racine supérieure peut seulement venir une fois.Mais pourquoi je reçois cette erreur, je ne sais pas.Android seul un élément racine est allowd. Erreur Xml
Ce sera la structure de mon fichier xml.
<root>
<ip>ip1</ip>
<ip>ip2</ip>
</root>
Et la balise ip va continuer à augmenter.Voici comment j'essaye de lire et ajouter des données au fichier existant.
private void UpdateExistingXML(String ip,File file)
{
try
{
DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder docBuilder = docFactory.newDocumentBuilder();
Document doc = docBuilder.parse(file.toURI().toString()); // <--error here
// Get the root element
Node root= doc.getFirstChild();
org.w3c.dom.Element newip=doc.createElement("ip");
newip.appendChild(doc.createTextNode(ip));
root.appendChild(newip);
TransformerFactory transformerFactory = TransformerFactory.newInstance();
Transformer transformer = transformerFactory.newTransformer();
DOMSource source = new DOMSource(doc);
StreamResult result = new StreamResult(file);
transformer.transform(source, result);
}
catch (ParserConfigurationException pce)
{
pce.printStackTrace();
}
catch (TransformerException tfe)
{
tfe.printStackTrace();
}
catch (IOException ioe)
{
ioe.printStackTrace();
}
catch (SAXException sae)
{
sae.printStackTrace();
}
catch (Exception e)
{
Log.e("eeee",e.getMessage());
}
}
Voici comment je crée le fichier xml pour la première fois, montrant que l'élément racine n'est inséré qu'une seule fois.
private void CreateNewXML(String ip) throws FileNotFoundException
{
FileOutputStream fos=null ;
Log.i("Fileeee","new");
try
{
fos = openFileOutput("clients.xml", Context.MODE_PRIVATE);
}
catch(FileNotFoundException e)
{
Log.e("FileNotFoundException", "can't create FileOutputStream");
}
XmlSerializer serializer = Xml.newSerializer();
try {
serializer.setOutput(fos, "UTF-8");
serializer.startDocument(null, Boolean.valueOf(true));
serializer.setFeature("http://xmlpull.org/v1/doc/features.html#indent-output", true);
serializer.startTag(null, "root");
serializer.startTag(null, "ip");
serializer.text(ip);
serializer.endTag(null, "ip");
serializer.endTag(null, "root");
serializer.endDocument();
serializer.flush();
fos.close();
}
catch (Exception e)
{
Log.e("Exceptionhaiiiiiiiiiii",e.getMessage());
}
}
Pouvez-vous poster le journal des erreurs et/ou logcat – BlackHatSamurai