| /* | |
| * Copyright 2004 The Apache Software Foundation | |
| * | |
| * Licensed 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 misc.common; | |
| import org.w3c.dom.Document; | |
| import org.xml.sax.InputSource; | |
| import org.xml.sax.SAXException; | |
| import org.xml.sax.SAXParseException; | |
| import org.xml.sax.XMLReader; | |
| import javax.xml.parsers.DocumentBuilder; | |
| import javax.xml.parsers.DocumentBuilderFactory; | |
| import javax.xml.parsers.ParserConfigurationException; | |
| import javax.xml.parsers.SAXParserFactory; | |
| import java.io.IOException; | |
| import java.io.StringReader; | |
| import static org.junit.Assert.fail; | |
| public class ParsersBase { | |
| private static final String outputEncoding = "UTF-8"; | |
| // for reference - the values for System Properties to switch between different parser implementaion for JAXP | |
| // ---------------------------------------------------------------------------------------------------------- | |
| // System Property Parser Value | |
| // ---------------------------------------------------------------------------------------------------------- | |
| // javax.xml.parsers.DocumentBuilderFactory Xerces org.apache.xerces.jaxp.DocumentBuilderFactoryImpl | |
| // | |
| // org.xml.sax.driver Xerces org.apache.xerces.parsers.SAXParser | |
| // | |
| // javax.xml.parsers.SAXParserFactory Xerces org.apache.xerces.jaxp.SAXParserFactoryImpl | |
| // ---------------------------------------------------------------------------------------------------------- | |
| // This method parsers the input xml string using the DOM API with the parser specified using the | |
| // "javax.xml.parsers.DocumentBuilderFactory" system property | |
| public void parseXmlWithDOMAPI(String xmlInput, String parserName, String docbuilderfactory) { | |
| System.setProperty("javax.xml.parsers.DocumentBuilderFactory", docbuilderfactory); | |
| try { | |
| // Step 1: create a DocumentBuilderFactory and configure it | |
| DocumentBuilderFactory dbf = | |
| DocumentBuilderFactory.newInstance(); | |
| dbf.setNamespaceAware(true); | |
| // Set the validation mode to either: no validation, DTD | |
| // validation, or XSD validation | |
| dbf.setValidating(false); | |
| // Step 2: create a DocumentBuilder that satisfies the constraints | |
| // specified by the DocumentBuilBderFactory | |
| DocumentBuilder db = dbf.newDocumentBuilder(); | |
| // Step 3: parse the input string | |
| Document doc = db.parse(new InputSource(new StringReader(xmlInput))); | |
| } | |
| catch (ParserConfigurationException pce) { | |
| pce.printStackTrace(); | |
| } | |
| catch (SAXParseException spe) { | |
| System.out.println("parsing error with " + parserName + " (DOM) for xml input string :'" + xmlInput + "''"); | |
| spe.printStackTrace(); | |
| fail("parsing error with " + parserName + " (DOM) for xml input string :'" + xmlInput + "''"); | |
| } | |
| catch (SAXException se) { | |
| se.printStackTrace(); | |
| } | |
| catch (IOException ioe) { | |
| ioe.printStackTrace(); | |
| } | |
| } | |
| // This method parsers the input xml string using the SAX API with the parser specified using the | |
| // "javax.xml.parsers.SAXParserFactory" and "org.xml.sax.driver" system properties | |
| public void parseXmlWithSAXAPI(String xmlInput, String parserName, String saxdriverprop, String saxparserfactoryprop) { | |
| try { | |
| // Set the system props to pick the appropriate parser implementation | |
| System.setProperty("org.xml.sax.driver", saxdriverprop); | |
| System.setProperty("javax.xml.parsers.SAXParserFactory", saxparserfactoryprop); | |
| SAXParserFactory saxparserfactory = SAXParserFactory.newInstance(); | |
| saxparserfactory.setNamespaceAware(false); | |
| XMLReader xmlreader = saxparserfactory.newSAXParser().getXMLReader(); | |
| xmlreader.parse(new InputSource(new StringReader(xmlInput))); | |
| } | |
| catch (ParserConfigurationException pce) { | |
| pce.printStackTrace(); | |
| } | |
| catch (SAXParseException spe) { | |
| System.out.println("parsing error with " + parserName + " (SAX) for xml input string :'" + xmlInput + "'"); | |
| spe.printStackTrace(); | |
| fail("parsing error with " + parserName + " for xml input string :'" + xmlInput + "'"); | |
| } | |
| catch (SAXException se) { | |
| se.printStackTrace(); | |
| } | |
| catch (IOException ioe) { | |
| ioe.printStackTrace(); | |
| } | |
| catch (Exception e) { | |
| e.printStackTrace(); | |
| } | |
| } | |
| } | |