jeudi 28 mai 2015
Sax-Parser ließt XML-File doppelt
Posted on 08:28 by verona
Hallo zusammen,
ich habe nach dieser Anleitung: JAVA SAX Parser Beispiel/Tutorial :: Ein Karlsruher Bloggt! einen Sax-Parser gebaut, der mir XML Dateien auslesen soll und daraus Java-Objekte erstellt.
Leider werden alle XML-Knoten doppelt gelesen und in die Array List eingefügt. Warum das gemacht wird? Verstehe ich leider nicht und deshalb benötige ich eure Hilfe!!!
Vielen Dank
Hier ist mein Code:
PersonenContentHandler.java
XML-Datei
ich habe nach dieser Anleitung: JAVA SAX Parser Beispiel/Tutorial :: Ein Karlsruher Bloggt! einen Sax-Parser gebaut, der mir XML Dateien auslesen soll und daraus Java-Objekte erstellt.
Leider werden alle XML-Knoten doppelt gelesen und in die Array List eingefügt. Warum das gemacht wird? Verstehe ich leider nicht und deshalb benötige ich eure Hilfe!!!
Vielen Dank
Hier ist mein Code:
Code:
try {
// XMLReader erzeugen
XMLReader xmlReader = XMLReaderFactory.createXMLReader();
// Pfad zur XML Datei
FileReader reader = new FileReader("E:\\temp\\meintollesxml.xml");
InputSource inputSource = new InputSource(reader);
// PersonenContentHandler wird übergeben
xmlReader.setContentHandler(new PersonenContentHandler());
// Parsen wird gestartet
xmlReader.parse(inputSource);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (SAXException e) {
e.printStackTrace();
}
Code:
import java.util.ArrayList;
import org.xml.sax.Attributes;
import org.xml.sax.ContentHandler;
import org.xml.sax.Locator;
import org.xml.sax.SAXException;
public class PersonenContentHandler implements ContentHandler {
private String currentValue;
private LogMessage message;
private ArrayList<LogMessage> messageList = new ArrayList<LogMessage>();
public void characters(char[] ch, int start, int length)
throws SAXException {
currentValue = new String(ch, start, length);
}
// Methode wird aufgerufen wenn der Parser zu einem Start-Tag kommt
public void startElement(String uri, String localName, String qName,
Attributes atts) throws SAXException {
if (localName.equals("event")) {
message = new LogMessage();
message.setMessage(atts.getValue(""));
// message.setDate(atts.getValue("timestamp"));
message.setLogLevel(atts.getValue("level"));
message.setThread(atts.getValue("thread"));
}
if (localName.equals("message")) {
message.setMessage(atts.getValue(currentValue));
}
}
// Methode wird aufgerufen wenn der Parser zu einem End-Tag kommt
public void endElement(String uri, String localName, String qName)
throws SAXException {
if (localName.equals("event")) {
this.messageList.add(message);
}
}
public void endDocument() throws SAXException {
}
public void endPrefixMapping(String prefix) throws SAXException {
}
public void ignorableWhitespace(char[] ch, int start, int length)
throws SAXException {
}
public void processingInstruction(String target, String data)
throws SAXException {
}
public void setDocumentLocator(Locator locator) {
}
public void skippedEntity(String name) throws SAXException {
}
public void startDocument() throws SAXException {
}
public void startPrefixMapping(String prefix, String uri)
throws SAXException {
}
}
Code:
<!DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://ift.tt/1LMFRmU;
<log4j:eventSet version="1.2" xmlns:log4j="http://ift.tt/Uchr2c;
<log4j:event logger="jacorb.config" timestamp="1415094724878" level="WARN" thread="main">
<log4j:message><![CDATA[this is my test message]]></log4j:message>
</log4j:event>
</log4j:eventSet>
Sax-Parser ließt XML-File doppelt
Categories: Sax-Parser ließt XML-File doppelt
Inscription à :
Publier les commentaires (Atom)
0 commentaires:
Enregistrer un commentaire