Note that there are some explanatory texts on larger screens.

plurals
  1. POJava XML: IndexOutOfBoundsException When appending a node
    primarykey
    data
    text
    <p>Now that I am writing a messenger program. The following code shall store the message history. Sadly, I've encountered an "IndexOutOfBounds" exception on a line and I've been trying for a whole day, but still can't figure out the problem. </p> <p>So here it is. </p> <pre><code> public static final SimpleDateFormat SDF = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); public static final String FILE_PATH = "/data/data/com.demo.xmppchat/"; public static Map&lt;Date, String&gt; messagesMap = new TreeMap&lt;Date, String&gt;(); // File should be saved as /username/buddy.xml public static void writeHistory(String username, String buddy, Map&lt;Date, String&gt; messages) { try { // Check if the file exists. If the file does not exist, create and initiate one. File file = new File(FILE_PATH + username); if (!file.exists()) { file.mkdirs(); } file = new File(FILE_PATH + username + "/" + buddy + ".xml"); // file.setReadable(true); file.setWritable(true); file.setExecutable(true); if (!file.exists()) { file.createNewFile(); initiateHistoryFile(username, buddy); } // Now that the XML file should exists as we have created and initialized one. // TODO: // Now we modify the XML file DocumentBuilderFactory docFactory = DocumentBuilderFactory.newInstance(); DocumentBuilder docBuilder = docFactory.newDocumentBuilder(); Document doc = docBuilder.parse(file); Element root = doc.getDocumentElement(); Element rootE = doc.getDocumentElement(); String s = ""; Node n = null; for (Map.Entry&lt;Date, String&gt; entry : messages.entrySet()) { // &lt;message&gt; Element messageE = doc.createElement("message"); rootE.appendChild(messageE); // Set attribute to &lt;message&gt; element // messageE.setAttribute("id", "1"); // &lt;from&gt; Element fromE = doc.createElement("from"); fromE.appendChild(doc.createTextNode(buddy)); messageE.appendChild(fromE); // &lt;date&gt; Element dateE = doc.createElement("date"); s = SDF.format(entry.getKey()); n = doc.createTextNode(s); dateE.appendChild(n); messageE.appendChild(dateE); // &lt;text&gt; Element textE = doc.createElement("text"); s = entry.getValue(); n = doc.createTextNode(s); textE.appendChild(n); messageE.appendChild(textE); root.appendChild(messageE); // &lt;- *** THIS IS WHERE "IndexOutOfBounds" exception OCCURS! *** } TransformerFactory transformerFactory = TransformerFactory.newInstance(); Transformer transformer = transformerFactory.newTransformer(); DOMSource source = new DOMSource(doc); StreamResult result = new StreamResult(file); transformer.transform(source, result); // Write the file // FileWriter fileWritter = new FileWriter(file.getName(),true); // BufferedWriter bufferWritter = new BufferedWriter(fileWritter); // bufferWritter.write(""); // bufferWritter.close(); } catch (Exception e) { ToneGenerator toneGenerator = new ToneGenerator(AudioManager.STREAM_SYSTEM, ToneGenerator.MAX_VOLUME); toneGenerator.startTone(ToneGenerator.TONE_PROP_BEEP); e.printStackTrace(); } } </code></pre> <p>The Log:</p> <pre><code>W/System.err(1067): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 0 W/System.err(1067): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251) W/System.err(1067): at java.util.ArrayList.add(ArrayList.java:143) W/System.err(1067): at org.apache.harmony.xml.dom.InnerNodeImpl.insertChildAt(InnerNodeImpl.java:126) W/System.err(1067): at org.apache.harmony.xml.dom.InnerNodeImpl.appendChild(InnerNodeImpl.java:52) W/System.err(1067): at com.demo.xmppchat.XMLReadWrite.writeHistory(XMLReadWrite.java:113) </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload