Kai Tiehle: Java und XML Wrapper fuer Xerces

Hallo,

ich bin nicht sehr bewandert mit Java und braeuchte daher Hilfe, wie man am besten einen Wrapper fuer Xerces-J erstellt um dann einfach eine Xml Datei mit Xerces-J zu validieren und entsprechender Fehlerreport in eine Datei zu schreiben - alternativ kann die ausgabe als String erfolgen.

Fuer Xerces-J wird  bereits ein command line beispiel bereitgestellt, in dem man entsprechend eine datei pruefen kann, nur gibt es keinen Paramter um die Fehlermeldung in eine Datei zu schreiben (Natuerlich kann man eine Batch erstellen und dann die Ausgabe in eineDatei schreiben mit '> fehler.txt', ich wuerde aber gerne entweder einen Dateipfad (uri) zur Ausgabe der Fehler angeben, oder einfach die Ausgabe in einer Methode als String Ergebnis abfragen.)

Wuerde es eine einfachen Weg geben um im nachfolgenden Wrapper Beispiel eine Methode zur Stringausgabe, bzw.  die Ausgabe der Fehler direkt in eine Datei zur implementieren. Waere sehr dankbar fuer Hilfe da ich einen Aufrufe ueber Batch/Konsole vermeiden moechte.

  
/*  
 * Licensed to the Apache Software Foundation (ASF) under one or more  
 * contributor license agreements.  See the NOTICE file distributed with  
 * this work for additional information regarding copyright ownership.  
 * The ASF licenses this file to You under the Apache License, Version 2.0  
 * (the "License"); you may not use this file except in compliance with  
 * the License.  You may obtain a copy of the License at  
 *  
 *      http://www.apache.org/licenses/LICENSE-2.0  
 *  
 * Unless required by applicable law or agreed to in writing, software  
 * distributed under the License is distributed on an "AS IS" BASIS,  
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  
 * See the License for the specific language governing permissions and  
 * limitations under the License.  
 */  
  
package dom.wrappers;  
  
import dom.ParserWrapper;  
  
import org.apache.xerces.dom.TextImpl;  
import org.apache.xerces.parsers.DOMParser;  
  
import org.w3c.dom.Document;  
import org.w3c.dom.Text;  
  
import org.xml.sax.ErrorHandler;  
import org.xml.sax.SAXException;  
import org.xml.sax.SAXParseException;  
import org.xml.sax.SAXNotRecognizedException;  
import org.xml.sax.SAXNotSupportedException;  
  
/**  
 * Wraps the Xerces DOM parser.  
 *  
 * @version  $Id: Xerces.java 447683 2006-09-19 02:36:31Z mrglavas $  
 */  
public class Xerces  
    implements ParserWrapper, ParserWrapper.DocumentInfo, ErrorHandler {  
  
    //  
    // Data  
    //  
  
    /** Parser. */  
    protected DOMParser parser = new DOMParser();  
  
    //  
    // Constructors  
    //  
  
    /** Default constructor. */  
    public Xerces() {  
        parser.setErrorHandler(this);  
    } // <init>()  
  
    //  
    // ParserWrapper methods  
    //  
  
    /** Parses the specified URI and returns the document. */  
    public Document parse(String uri) throws Exception {  
        parser.parse(uri);  
        return parser.getDocument();  
    } // parse(String):Document  
  
    /** Sets a feature. */  
    public void setFeature(String featureId, boolean state)  
        throws SAXNotRecognizedException, SAXNotSupportedException {  
        parser.setFeature(featureId, state);  
    } // setFeature(String,boolean)  
  
    /** Returns the document information. */  
    public ParserWrapper.DocumentInfo getDocumentInfo() {  
        return this;  
    } // getDocumentInfo():DocumentInfo  
  
    //  
    // DocumentInfo methods  
    //  
  
    /**  
     * Returns true if the specified text node is ignorable whitespace.  
     */  
    public boolean isIgnorableWhitespace(Text text) {  
        return ((TextImpl)text).isIgnorableWhitespace();  
    }  
  
    //  
    // ErrorHandler methods  
    //  
  
    /** Warning. */  
    public void warning(SAXParseException ex) throws SAXException {  
        printError("Warning", ex);  
    } // warning(SAXParseException)  
  
    /** Error. */  
    public void error(SAXParseException ex) throws SAXException {  
        printError("Error", ex);  
    } // error(SAXParseException)  
  
    /** Fatal error. */  
    public void fatalError(SAXParseException ex) throws SAXException {  
        printError("Fatal Error", ex);  
        throw ex;  
    } // fatalError(SAXParseException)  
  
    //  
    // Protected methods  
    //  
  
    /** Prints the error message. */  
    protected void printError(String type, SAXParseException ex) {  
  
        System.err.print("[");  
        System.err.print(type);  
        System.err.print("] ");  
        String systemId = ex.getSystemId();  
        if (systemId != null) {  
            int index = systemId.lastIndexOf('/');  
            if (index != -1)  
                systemId = systemId.substring(index + 1);  
            System.err.print(systemId);  
        }  
        System.err.print(':');  
        System.err.print(ex.getLineNumber());  
        System.err.print(':');  
        System.err.print(ex.getColumnNumber());  
        System.err.print(": ");  
        System.err.print(ex.getMessage());  
        System.err.println();  
        System.err.flush();  
  
    } // printError(String,SAXParseException)  
  
} // class Xerces