von XML Saxparser Logdatei erzeigen

Status
Nicht offen für weitere Antworten.
D

Davide

Gast
Hallo hab gerade einen XML parser geschrieben würd jetzt genre aber auch eine Log Datei erstellen lassen wie müsste man das dne in die Klasse einfügen ich bekomm bis jetzt immer nur eine leere File ohne interesanten Inhalt.




import java.util.logging.FileHandler;
import java.util.logging.Logger;

import org.xml.sax.*;
import org.xml.sax.helpers.*;
import javax.xml.parsers.*;
import org.apache.log4j.*;

import org.xml.sax.SAXException;

/**
* Minimales Beispiel für die Verwendung des SAX-Parsers in Java. Die XML Datei wird
* eingelesen und ordentlich formatiert auf der Konsole ausgegeben.
* DefaultHandler ist eine abstrakte Klasse, die die Interfaces ContentHandler,
* DTDHandler, EntityResolver und ErrorHandler implementiert.
*/
public class HowToListerSAX extends DefaultHandler
{
/**
* Verschachtelungstiefe der Tags, wird verwendet, um das XML-Dokument
* formatiert auszugeben.
*/
private int level = 0;
private static final Logger log = Logger.getLogger( Log1Demo.class.getName() );
/**
* Leerer Konstruktor, die Initialisierung des Parsers erfolgt in der
* main-Methode.
*/
public HowToListerSAX()
{
}








/**
* Gibt <code>level</code> Tabs auf der Konsole aus.
* dient zum einrücken!!!!
*/
public void indent()
{
// Mit Tabs einrücken
for (int i=0;i<level;i++)
System.out.print("\t");
}

/**
* Wird am Anfang des Dokuments aufgerufen, definiert im Interface ContentHandler.
*/
public void startDocument() throws SAXException
{
//System.out.println("Start des Dokuments");
}

/**
* Wird bei jedem öffnenden Tag aufgerufen, definiert im Interface ContentHandler.
* Bei leeren Tags wie zum Beispiel &img /& wird startElement und
* endElement direkt hintereinander aufgerufen. Mit J2SE 1.4.2 scheint nur
* qName gefüllt zu sein.
*
* @param namespaceURI URI des Namespaces für dieses Element, kann auch ein leerer String sein.
* @param localName Lokaler Name des Elements, kann auch ein leerer String sein.
* @param qName Qualifizierter Name (mit Namespace-Prefix) des Elements.
* @param atts Liste der Attribute.
*/
public void startElement(String namespaceURI, String localName,
String qName, Attributes atts) throws SAXException
{
indent();

System.out.print("<" + qName);

// Test-Code um zu sehen, was in namespaceURI und localName steht
// System.out.print(" " + namespaceURI);
// System.out.print(" " + localName);

// Attribute ausgeben
for( int i = 0; i < atts.getLength(); i++ )
System.out.print(" " + atts.getQName(i) + "=\"" + atts.getValue(i) + "\"");

System.out.println(">");

level++;
}

/**
* Wird bei jedem schließenden Tag aufgerufen, definiert im Interface ContentHandler.
*
* @param namespaceURI URI des Namespaces für dieses Element, kann auch ein leerer String sein.
* @param localName Lokaler Name des Elements.
* @param qName Qualifizierter Name des Elements.
*/
public void endElement(String namespaceURI, String localName, String qName)
{
level--;

indent();

System.out.println("</" + qName + ">");
}

/**
* Wird immer aufgerufen, wenn Zeichen im Dokument auftauchen.
*Wichtig alles was im Element drin steht wird durch Methode characters ausgegeben!!!!
* @param ch Character Array
* @param start Startindex der Zeichen in ch
* @param length Länge der Zeichenkette
*/
public void characters(char ch[], int start, int length)
{
String s = new String(ch,start,length).trim();
if (s.length() > 0) {
indent();
System.out.println(s);
}
}

/**
* Wird aufgerufen, wenn Leerraum (" ", "\t", "\n", "\r") im Dokument
* auftaucht, der für die Struktur des Dokuments nicht von Bedeutung ist.
*
* @param ch Character Array
* @param start Startindex der Zeichen in ch
* @param length Länge der Zeichenkette
*/
public void ignorableWhitespace(char[] ch, int start, int length)
{
}





public static void main(String args[])
{
try {
// Neuen SAX-Parser erzeugen
SAXParserFactory factory = SAXParserFactory.newInstance();
SAXParser saxParser = factory.newSAXParser();

FileHandler fh = new FileHandler( "c:\\log.xml.txt" );


log.addHandler( fh );

// XML Datei parsen, die entsprechenden Methoden des DefaultHandler
// werden als Callback aufgerufen.
saxParser.parse("c:\\uri.xml",new HowToListerSAX());

}
catch (Exception e) {
System.out.println(e);


}
}
}

Bin für jede Antwort dankbar!!!
 

HoaX

Top Contributor
a) benutze die code-tags, so ist das nur quälcode den keiner lesen will

b) wo schreibst du denn in die datei ... ? ;)
 
D

Davide

Gast
lol wie geht das mit den Tags sorry!!
MMh alos ich will das meine XML geparst wird un anschließend in der Logdatei alle informationen geschrieben werden wie fehlerinformationen z.b.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben