All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.xml.resolver.apps.xparse Maven / Gradle / Ivy

There is a newer version: 0.10.0
Show newest version
// xparse.java - A simple command-line XML parser

/*
 * 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 org.apache.xml.resolver.apps;

import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Vector;
import java.util.Date;

import org.xml.sax.*;
import org.xml.sax.helpers.*;

import javax.xml.parsers.*;

import org.apache.xml.resolver.tools.ResolvingParser;
import org.apache.xml.resolver.Catalog;
import org.apache.xml.resolver.CatalogManager;
import org.apache.xml.resolver.helpers.Debug;

/**
 * A simple command-line XML parsing application.
 *
 * 

This class implements a simple command-line XML Parser. It's * just a little wrapper around the JAXP Parser with support for * catalogs. *

* *

Usage: xparse [options] document.xml

* *

Where:

* *
*
-c catalogfile
*
Load a particular catalog file.
*
-w
*
Perform a well-formed parse, not a validating parse.
*
-v (the default)
*
Perform a validating parse.
*
-n
*
Perform a namespace-ignorant parse.
*
-N (the default)
*
Perform a namespace-aware parse.
*
-d integer
*
Set the debug level. Warnings are shown if the debug level * is > 2.
*
-E integer
*
Set the maximum number of errors to display.
*
* *

The process ends with error-level 1, if there errors.

* * @deprecated This interface has been replaced by the * {@link org.apache.xml.resolver.tools.ResolvingXMLReader} for SAX2. * * @see org.apache.xml.resolver.tools.ResolvingParser * * @author Norman Walsh * [email protected] * * @version 1.0 */ public class xparse { private static Debug debug = CatalogManager.getStaticManager().debug; /** The main entry point */ public static void main (String[] args) throws FileNotFoundException, IOException { String xmlfile = null; int debuglevel = 0; int maxErrs = 10; boolean nsAware = true; boolean validating = true; boolean showWarnings = (debuglevel > 2); boolean showErrors = true; Vector catalogFiles = new Vector(); for (int i=0; i= 0) { debug.setDebug(debuglevel); showWarnings = (debuglevel > 2); } } catch (Exception e) { // nop } continue; } if (args[i].equals("-E")) { ++i; String errstr = args[i]; try { int errs = Integer.parseInt(errstr); if (errs >= 0) { maxErrs = errs; } } catch (Exception e) { // nop } continue; } xmlfile = args[i]; } if (xmlfile == null) { System.out.println("Usage: org.apache.xml.resolver.apps.xparse [opts] xmlfile"); System.exit(1); } ResolvingParser.validating = validating; ResolvingParser.namespaceAware = nsAware; ResolvingParser reader = new ResolvingParser(); Catalog catalog = reader.getCatalog(); for (int count = 0; count < catalogFiles.size(); count++) { String file = (String) catalogFiles.elementAt(count); catalog.parseCatalog(file); } XParseError xpe = new XParseError(showErrors, showWarnings); xpe.setMaxMessages(maxErrs); reader.setErrorHandler(xpe); String parseType = validating ? "validating" : "well-formed"; String nsType = nsAware ? "namespace-aware" : "namespace-ignorant"; if (maxErrs > 0) { System.out.println("Attempting " + parseType + ", " + nsType + " parse"); } Date startTime = new Date(); try { reader.parse(xmlfile); } catch (SAXException sx) { System.out.println("SAX Exception: " + sx); } catch (Exception e) { e.printStackTrace(); } Date endTime = new Date(); long millisec = endTime.getTime() - startTime.getTime(); long secs = 0; long mins = 0; long hours = 0; if (millisec > 1000) { secs = millisec / 1000; millisec = millisec % 1000; } if (secs > 60) { mins = secs / 60; secs = secs % 60; } if (mins > 60) { hours = mins / 60; mins = mins % 60; } if (maxErrs > 0) { System.out.print("Parse "); if (xpe.getFatalCount() > 0) { System.out.print("failed "); } else { System.out.print("succeeded "); System.out.print("("); if (hours > 0) { System.out.print(hours + ":"); } if (hours > 0 || mins > 0) { System.out.print(mins + ":"); } System.out.print(secs + "." + millisec); System.out.print(") "); } System.out.print("with "); int errCount = xpe.getErrorCount(); int warnCount = xpe.getWarningCount(); if (errCount > 0) { System.out.print(errCount + " error"); System.out.print(errCount > 1 ? "s" : ""); System.out.print(" and "); } else { System.out.print("no errors and "); } if (warnCount > 0) { System.out.print(warnCount + " warning"); System.out.print(warnCount > 1 ? "s" : ""); System.out.print("."); } else { System.out.print("no warnings."); } System.out.println(""); } if (xpe.getErrorCount() > 0) { System.exit(1); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy