use of org.xml.sax.ContentHandler in project android_frameworks_base by ParanoidAndroid.
the class SafeSaxTest method testPerformance.
@LargeTest
public void testPerformance() throws Exception {
InputStream in = mContext.getResources().openRawResource(R.raw.youtube);
byte[] xmlBytes;
try {
ByteArrayOutputStream out = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int length;
while ((length = in.read(buffer)) != -1) {
out.write(buffer, 0, length);
}
xmlBytes = out.toByteArray();
} finally {
in.close();
}
Log.i("***", "File size: " + (xmlBytes.length / 1024) + "k");
VideoAdapter videoAdapter = new VideoAdapter();
ContentHandler handler = newContentHandler(videoAdapter);
for (int i = 0; i < 2; i++) {
pureSaxTest(new ByteArrayInputStream(xmlBytes));
saxyModelTest(new ByteArrayInputStream(xmlBytes));
saxyModelTest(new ByteArrayInputStream(xmlBytes), handler);
}
}
use of org.xml.sax.ContentHandler in project robovm by robovm.
the class TransformerIdentityImpl method transform.
/**
* Process the source tree to the output result.
* @param source The input for the source tree.
*
* @param outputTarget The output target.
*
* @throws TransformerException If an unrecoverable error occurs
* during the course of the transformation.
*/
public void transform(Source source, Result outputTarget) throws TransformerException {
createResultContentHandler(outputTarget);
/*
* According to JAXP1.2, new SAXSource()/StreamSource()
* should create an empty input tree, with a default root node.
* new DOMSource()creates an empty document using DocumentBuilder.
* newDocument(); Use DocumentBuilder.newDocument() for all 3 situations,
* since there is no clear spec. how to create an empty tree when
* both SAXSource() and StreamSource() are used.
*/
if ((source instanceof StreamSource && source.getSystemId() == null && ((StreamSource) source).getInputStream() == null && ((StreamSource) source).getReader() == null) || (source instanceof SAXSource && ((SAXSource) source).getInputSource() == null && ((SAXSource) source).getXMLReader() == null) || (source instanceof DOMSource && ((DOMSource) source).getNode() == null)) {
try {
DocumentBuilderFactory builderF = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = builderF.newDocumentBuilder();
String systemID = source.getSystemId();
source = new DOMSource(builder.newDocument());
// Copy system ID from original, empty Source to new Source
if (systemID != null) {
source.setSystemId(systemID);
}
} catch (ParserConfigurationException e) {
throw new TransformerException(e.getMessage());
}
}
try {
if (source instanceof DOMSource) {
DOMSource dsource = (DOMSource) source;
m_systemID = dsource.getSystemId();
Node dNode = dsource.getNode();
if (null != dNode) {
try {
if (dNode.getNodeType() == Node.ATTRIBUTE_NODE)
this.startDocument();
try {
if (dNode.getNodeType() == Node.ATTRIBUTE_NODE) {
String data = dNode.getNodeValue();
char[] chars = data.toCharArray();
characters(chars, 0, chars.length);
} else {
org.apache.xml.serializer.TreeWalker walker;
walker = new org.apache.xml.serializer.TreeWalker(this, m_systemID);
walker.traverse(dNode);
}
} finally {
if (dNode.getNodeType() == Node.ATTRIBUTE_NODE)
this.endDocument();
}
} catch (SAXException se) {
throw new TransformerException(se);
}
return;
} else {
String messageStr = XSLMessages.createMessage(XSLTErrorResources.ER_ILLEGAL_DOMSOURCE_INPUT, null);
throw new IllegalArgumentException(messageStr);
}
}
InputSource xmlSource = SAXSource.sourceToInputSource(source);
if (null == xmlSource) {
//"Can't transform a Source of type "
throw new TransformerException(XSLMessages.createMessage(XSLTErrorResources.ER_CANNOT_TRANSFORM_SOURCE_TYPE, new Object[] { source.getClass().getName() }));
//+ source.getClass().getName() + "!");
}
if (null != xmlSource.getSystemId())
m_systemID = xmlSource.getSystemId();
XMLReader reader = null;
boolean managedReader = false;
try {
if (source instanceof SAXSource) {
reader = ((SAXSource) source).getXMLReader();
}
if (null == reader) {
try {
reader = XMLReaderManager.getInstance().getXMLReader();
managedReader = true;
} catch (SAXException se) {
throw new TransformerException(se);
}
} else {
try {
reader.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
} catch (org.xml.sax.SAXException se) {
// We don't care.
}
}
// Get the input content handler, which will handle the
// parse events and create the source tree.
ContentHandler inputHandler = this;
reader.setContentHandler(inputHandler);
if (inputHandler instanceof org.xml.sax.DTDHandler)
reader.setDTDHandler((org.xml.sax.DTDHandler) inputHandler);
try {
if (inputHandler instanceof org.xml.sax.ext.LexicalHandler)
reader.setProperty("http://xml.org/sax/properties/lexical-handler", inputHandler);
if (inputHandler instanceof org.xml.sax.ext.DeclHandler)
reader.setProperty("http://xml.org/sax/properties/declaration-handler", inputHandler);
} catch (org.xml.sax.SAXException se) {
}
try {
if (inputHandler instanceof org.xml.sax.ext.LexicalHandler)
reader.setProperty("http://xml.org/sax/handlers/LexicalHandler", inputHandler);
if (inputHandler instanceof org.xml.sax.ext.DeclHandler)
reader.setProperty("http://xml.org/sax/handlers/DeclHandler", inputHandler);
} catch (org.xml.sax.SAXNotRecognizedException snre) {
}
reader.parse(xmlSource);
} catch (org.apache.xml.utils.WrappedRuntimeException wre) {
Throwable throwable = wre.getException();
while (throwable instanceof org.apache.xml.utils.WrappedRuntimeException) {
throwable = ((org.apache.xml.utils.WrappedRuntimeException) throwable).getException();
}
throw new TransformerException(wre.getException());
} catch (org.xml.sax.SAXException se) {
throw new TransformerException(se);
} catch (IOException ioe) {
throw new TransformerException(ioe);
} finally {
if (managedReader) {
XMLReaderManager.getInstance().releaseXMLReader(reader);
}
}
} finally {
if (null != m_outputStream) {
try {
m_outputStream.close();
} catch (IOException ioe) {
}
m_outputStream = null;
}
}
}
use of org.xml.sax.ContentHandler in project robovm by robovm.
the class DOM2DTM method dispatchToEvents.
/**
* Directly create SAX parser events from a subtree.
*
* @param nodeHandle The node ID.
* @param ch A non-null reference to a ContentHandler.
*
* @throws org.xml.sax.SAXException
*/
public void dispatchToEvents(int nodeHandle, org.xml.sax.ContentHandler ch) throws org.xml.sax.SAXException {
TreeWalker treeWalker = m_walker;
ContentHandler prevCH = treeWalker.getContentHandler();
if (null != prevCH) {
treeWalker = new TreeWalker(null);
}
treeWalker.setContentHandler(ch);
try {
Node node = getNode(nodeHandle);
treeWalker.traverseFragment(node);
} finally {
treeWalker.setContentHandler(null);
}
}
use of org.xml.sax.ContentHandler in project robovm by robovm.
the class TransformerImpl method transformToRTF.
/**
* Given a stylesheet element, create a result tree fragment from it's
* contents.
* @param templateParent The template element that holds the fragment.
* @param dtmFrag The DTM to write the RTF into
* @return the NodeHandle for the root node of the resulting RTF.
*
* @throws TransformerException
* @xsl.usage advanced
*/
private int transformToRTF(ElemTemplateElement templateParent, DTM dtmFrag) throws TransformerException {
XPathContext xctxt = m_xcontext;
ContentHandler rtfHandler = dtmFrag.getContentHandler();
// Obtain the ResultTreeFrag's root node.
// NOTE: In SAX2RTFDTM, this value isn't available until after
// the startDocument has been issued, so assignment has been moved
// down a bit in the code.
// not yet reliably = dtmFrag.getDocument();
int resultFragment;
// Save the current result tree handler.
SerializationHandler savedRTreeHandler = this.m_serializationHandler;
// And make a new handler for the RTF.
ToSAXHandler h = new ToXMLSAXHandler();
h.setContentHandler(rtfHandler);
h.setTransformer(this);
// Replace the old handler (which was already saved)
m_serializationHandler = h;
// use local variable for the current handler
SerializationHandler rth = m_serializationHandler;
try {
rth.startDocument();
// startDocument is "bottlenecked" in RTH. We need it acted upon immediately,
// to set the DTM's state as in-progress, so that if the xsl:variable's body causes
// further RTF activity we can keep that from bashing this DTM.
rth.flushPending();
try {
// Do the transformation of the child elements.
executeChildTemplates(templateParent, true);
// Make sure everything is flushed!
rth.flushPending();
// Get the document ID. May not exist until the RTH has not only
// received, but flushed, the startDocument, and may be invalid
// again after the document has been closed (still debating that)
// ... so waiting until just before the end seems simplest/safest.
resultFragment = dtmFrag.getDocument();
} finally {
rth.endDocument();
}
} catch (org.xml.sax.SAXException se) {
throw new TransformerException(se);
} finally {
// Restore the previous result tree handler.
this.m_serializationHandler = savedRTreeHandler;
}
return resultFragment;
}
use of org.xml.sax.ContentHandler in project robovm by robovm.
the class ExpatParser method startDocument.
private void startDocument() throws SAXException {
ContentHandler contentHandler = xmlReader.contentHandler;
if (contentHandler != null) {
contentHandler.setDocumentLocator(this.locator);
contentHandler.startDocument();
}
}
Aggregations