Hi,
nachdem ich in einem anderen Thread nach einer Konkatenation von XML Files gefragt habe(Siehe Link). Wurde mir gerate die XML-Files mit SAX zu parsen.
www.java-forum.org/de/viewtopic.php?t=28730
Dies habe ich durch den unten stehenden Code realisiert. Allerdings bricht das Parsen bei einer bestimmten Größe der XML Files ab. Und zwar an der Stelle wo ich das Datum einlesen will.
Es wird dann an stelle von 02-01-2006 nur noch 02-01-20 ausgegeben. Da die Funktion public void characters(char ch[], int start, int length) nur noch mit den Parametern start=2040 length=8 aufgeufen wird. Bei den läufen davor jedoch mit length gleich=10.
Woran könnte das liegen?
nachdem ich in einem anderen Thread nach einer Konkatenation von XML Files gefragt habe(Siehe Link). Wurde mir gerate die XML-Files mit SAX zu parsen.
www.java-forum.org/de/viewtopic.php?t=28730
Dies habe ich durch den unten stehenden Code realisiert. Allerdings bricht das Parsen bei einer bestimmten Größe der XML Files ab. Und zwar an der Stelle wo ich das Datum einlesen will.
Es wird dann an stelle von 02-01-2006 nur noch 02-01-20 ausgegeben. Da die Funktion public void characters(char ch[], int start, int length) nur noch mit den Parametern start=2040 length=8 aufgeufen wird. Bei den läufen davor jedoch mit length gleich=10.
Woran könnte das liegen?
Code:
package monitoringclient.logic;
import java.util.*;
import org.xml.sax.*;
import org.xml.sax.helpers.*;
import monitoringclient.model.MyDisk;
import monitoringclient.model.MyInstance;
import monitoringclient.model.MyPing;
public class MyEventHandler extends DefaultHandler {
public MyEventHandler (){
myInstanceList_=new LinkedList();
}
public void startElement(String uri, String qname, String name, Attributes atts){
if(name.equalsIgnoreCase("Instance")){
aMyInstance_= new MyInstance();
}
else if(name.equalsIgnoreCase("Hostname")){
currentElement="Hostname";
}
else if(name.equalsIgnoreCase("Port")){
currentElement="Port";
}
else if(name.equalsIgnoreCase("Date")){
currentElement="Date";
}
else if(name.equalsIgnoreCase("Time")){
currentElement="Time";
}
else if(name.equalsIgnoreCase("SMTP")){
aPing_ = new MyPing();
}
.... noch weitere zuweisungen
else{
currentElement="nothing";
}
}
public void endElement(String uri, String name, String qname){
if(qname.equalsIgnoreCase("Instance")){
//myInstanceList_.add(aMyInstance_);
//startParsing
System.out.println("Eventueller start von Parsing");
this.aMyInstance_=null;
}
else if(qname.equalsIgnoreCase("SMTP")){
aMyInstance_.setSMTP(aPing_);
aPing_=null;
}
else if(qname.equalsIgnoreCase("DB")){
aMyInstance_.setDB(aPing_);
aPing_=null;
}
else if(qname.equalsIgnoreCase("Disk")){
aMyInstance_.addDisk(aDisk_);
aDisk_=null;
}
}
public void characters(char ch[], int start, int length){
String value = new String (ch, start, length);
if(!value.trim().equals("")){
if(currentElement.equalsIgnoreCase("Hostname")){
aMyInstance_.setHostname(value);
}
else if(currentElement.equalsIgnoreCase("Port")){
aMyInstance_.setPort(value);
}
else if(currentElement.equalsIgnoreCase("Date")){
System.out.println(value);
aMyInstance_.setDate(value);
}
else if(currentElement.equalsIgnoreCase("Time")){
System.out.println(value);
aMyInstance_.setTime(value);
}
...
noch adds
}
}
public LinkedList getInstance(){
return this.myInstanceList_;
}
private LinkedList myInstanceList_;
private String currentElement;
private MyInstance aMyInstance_;
private MyPing aPing_;
private MyDisk aDisk_;
}