Javas XML-Parser scheint zu denken, dass mein XML-Dokument nach dem Wurzelelement nicht gut gebildet ist. Aber ich habe es mit mehreren Tools validiert und sie sind alle anderer Meinung. Es ist wahrscheinlich ein Fehler in meinem Code und nicht im Dokument selbst. Ich würde wirklich jede Hilfe schätzen, die Sie mir anbieten könnten.Java-Sprichwort XML-Dokument nicht gut gebildet
Hier ist meine Java-Methode:
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 = "";
}
}
Das Folgende ist die XML-Datei, die ich zu Last bin versucht:
<?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>
Und hier wird die Fehlermeldung Java ist für mich zu werfen:
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 <init>
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.<init>(TodoListGUI.java:42)
at todolist.Main.main(Main.java:25)
BUILD SUCCESSFUL (total time: 19 seconds)
Als Referenz TodoListGUI.java:199 ist
Wenn Kontext hier für jemanden hilfreich ist, versuche ich eine einfache GUI-Anwendung zu schreiben, um eine Todo-Liste zu verwalten, die XML-Dateien lesen und schreiben kann, die die Aufgaben definieren.
können Sie ein XML-Beispieldokument posten? –
Ihre XML-Tags scheinen gefressen worden zu sein - könnten Sie sie bearbeiten, um sie sichtbar zu machen? Sie sollten in der Lage sein, ein '<' mit ''<'' zu bekommen. – psmears
@psmears: Nein, nur mit 4 Leerzeichen einrücken oder Code auswählen und dann '010101' in der Editor-Symbolleiste oder die' Strg + K'-Taste drücken. – BalusC