Java saying XML Document Not Well Formed

Posted by Pyroclastic on Stack Overflow See other posts from Stack Overflow or by Pyroclastic
Published on 2010-05-17T22:11:07Z Indexed on 2010/05/17 22:20 UTC
Read the original article Hit count: 191

Filed under:
|
|
|

Hey all. Java's XML parser seems to be thinking that my XML document is not well formed following the root element, but I've validated it with several tools and they all disagree. It's probably an error in my code rather than in the document itself, I'd really appreciate any help you all could offer me.

Here is my Java method:

private void loadFromXMLFile(File f) throws ParserConfigurationException, IOException, SAXException {
File file = f;
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db;
Document doc = null;
db = dbf.newDocumentBuilder();
doc = db.parse(file);
doc.getDocumentElement().normalize();
String desc = "";
String due = "";
String comment = "";
NodeList tasksList = doc.getElementsByTagName("task");
for (int i = 0; i < tasksList.getLength(); i++) {
    NodeList attributes = tasksList.item(i).getChildNodes();
    for (int j = 0; i < attributes.getLength(); j++) {
    Node attribute = attributes.item(i);
    if (attribute.getNodeName() == "description") {
        desc = attribute.getTextContent();
    }
    if (attribute.getNodeName() == "due") {
        due = attribute.getTextContent();
    }
    if (attribute.getNodeName() == "comment") {
        comment = attribute.getTextContent();
    }
    tasks.add(new Task(desc, due, comment));
    }
    desc = "";
    due = "";
    comment = "";
}
}

And here is the XML file I'm trying to load:

<?xml version="1.0"?>
<tasklist>
    <task>
        <description>Task 1</description>
        <due>Due date 1</due>
        <comment>Comment 1</comment>
        <completed>false</completed>
    </task>
    <task>
        <description>Task 2</description>
        <due>Due date 2</due>
        <comment>Comment 2</comment>
        <completed>false</completed>
    </task>
    <task>
        <description>Task 3</description>
        <due>Due date 3</due>
        <comment>Comment 3</comment>
        <completed>true</completed>
    </task>
</tasklist>

And here is the error message java is throwing for me:


run:
[Fatal Error] tasks.xml:28:3: The markup in the document following the root element must be well-formed.
May 17, 2010 6:07:02 PM todolist.TodoListGUI 
SEVERE: null
org.xml.sax.SAXParseException: The markup in the document following the root element must be well-formed.
        at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:239)
        at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:283)
        at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:208)
        at todolist.TodoListGUI.loadFromXMLFile(TodoListGUI.java:199)
        at todolist.TodoListGUI.(TodoListGUI.java:42)
        at todolist.Main.main(Main.java:25)
BUILD SUCCESSFUL (total time: 19 seconds)

For reference TodoListGUI.java:199 is


doc = db.parse(file);

If context is helpful to anyone here, I'm trying to write a simple GUI application to manage a todo list that can read and write to and from XML files defining the tasks.

Any advice is appreciated!

© Stack Overflow or respective owner

Related posts about Xml

Related posts about java