Author: schor Date: Thu Oct 20 14:17:39 2011 New Revision: 1186824 URL: http://svn.apache.org/viewvc?rev=1186824&view=rev Log: [UIMA-239] Prepare for enabling XML comment preservation in XML parsing.
Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/SaxDeserializer_impl.java uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/XMLParser_impl.java Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/SaxDeserializer_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/SaxDeserializer_impl.java?rev=1186824&r1=1186823&r2=1186824&view=diff ============================================================================== --- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/SaxDeserializer_impl.java (original) +++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/SaxDeserializer_impl.java Thu Oct 20 14:17:39 2011 @@ -37,13 +37,14 @@ import org.w3c.dom.Node; import org.xml.sax.Attributes; import org.xml.sax.Locator; import org.xml.sax.SAXException; +import org.xml.sax.ext.LexicalHandler; /** * Reference implementation of {@link SaxDeserializer}. * * */ -public class SaxDeserializer_impl implements SaxDeserializer { +public class SaxDeserializer_impl implements SaxDeserializer, LexicalHandler { static final String JAXP_SCHEMA_LANGUAGE = "http://java.sun.com/xml/jaxp/properties/schemaLanguage"; static final String W3C_XML_SCHEMA = "http://www.w3.org/2001/XMLSchema"; @@ -109,6 +110,7 @@ public class SaxDeserializer_impl implem * @see org.apache.uima.util.SaxDeserializer#getObject() */ public XMLizable getObject() throws InvalidXMLException { + // COMMENT NODEs may be present, and getDocumentElement would skip it... Node rootDomNode = ((Document) mDOMResult.getNode()).getDocumentElement(); // build the object @@ -209,4 +211,22 @@ public class SaxDeserializer_impl implem // System.out.println("SaxDeserializer_impl::startPrefixMapping("+prefix+","+uri+")"); mTransformerHandler.startPrefixMapping(prefix, uri); } + + //============================================== + // Methods for LexicalHandler interface + public void comment(char[] arg0, int arg1, int arg2) throws SAXException { + mTransformerHandler.comment(arg0, arg1, arg2); + } + + public void endCDATA() throws SAXException {} + + public void endDTD() throws SAXException {} + + public void endEntity(String name) throws SAXException {} + + public void startCDATA() throws SAXException {} + + public void startDTD(String name, String publicId, String systemId) throws SAXException {} + + public void startEntity(String name) throws SAXException {} } Modified: uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/XMLParser_impl.java URL: http://svn.apache.org/viewvc/uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/XMLParser_impl.java?rev=1186824&r1=1186823&r2=1186824&view=diff ============================================================================== --- uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/XMLParser_impl.java (original) +++ uima/uimaj/trunk/uimaj-core/src/main/java/org/apache/uima/util/impl/XMLParser_impl.java Thu Oct 20 14:17:39 2011 @@ -136,10 +136,9 @@ public class XMLParser_impl implements X SAXParserFactory factory = SAXParserFactory.newInstance(); // Turn on namespace support - factory.setNamespaceAware(true); - - SAXParser parser = factory.newSAXParser(); - + factory.setNamespaceAware(true); + SAXParser parser = factory.newSAXParser(); // in the future, if performance issue, can save this , and reuse with reset() + XMLReader reader = parser.getXMLReader(); reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true); @@ -174,6 +173,7 @@ public class XMLParser_impl implements X // Parse with SaxDeserializer SaxDeserializer deser = new SaxDeserializer_impl(this, aOptions); reader.setContentHandler(deser); + reader.setProperty ("http://xml.org/sax/properties/lexical-handler", deser); reader.parse(input); // if there was an exception, throw it