Class/Object

eu.cdevreeze.yaidom.parse

DocumentParserUsingStax

Related Docs: object DocumentParserUsingStax | package parse

Permalink

final class DocumentParserUsingStax extends AbstractDocumentParser

StAX-based Document parser.

Typical non-trivial creation is as follows, assuming a class MyXmlResolver, which extends XMLResolver, and a class MyXmlReporter, which extends XMLReporter:

val xmlInputFactory = XMLInputFactory.newFactory()
xmlInputFactory.setProperty(XMLInputFactory.IS_COALESCING, java.lang.Boolean.TRUE)
xmlInputFactory.setXMLResolver(new MyXmlResolver)
xmlInputFactory.setXMLReporter(new MyXmlReporter)

val docParser = DocumentParserUsingStax.newInstance(xmlInputFactory)

A custom XMLResolver could be used to retrieve DTDs locally, or even to suppress DTD resolution. The latter can be coded as follows (compare with http://stuartsierra.com/2008/05/08/stop-your-java-sax-parser-from-downloading-dtds), risking some loss of information:

class MyXmlResolver extends XMLResolver {
  override def resolveEntity(publicId: String, systemId: String, baseUri: String, namespace: String): Any = {
    // This dirty hack may not work on IBM JVMs
    new java.io.StringReader("")
  }
}

A trivial XMLReporter could look like this:

class MyXmlReporter extends XMLReporter {
  override def report(message: String, errorType: String, relatedInformation: AnyRef, location: Location): Unit = {
    println("Location: %s. Error type: %s. Message: %s.".format(location, errorType, message))
  }
}

If more flexibility is needed in configuring the DocumentParser than offered by this class, consider writing a wrapper DocumentParser which wraps a DocumentParserUsingStax, but adapts the parse method.

A DocumentParserUsingStax instance can be re-used multiple times, from the same thread. If the XMLInputFactory is thread-safe, it can even be re-used from multiple threads. Typically a XMLInputFactory cannot be trusted to be thread-safe, however. In a web application, one (safe) way to deal with that is to use one XMLInputFactory instance per request.

Linear Supertypes
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. DocumentParserUsingStax
  2. AbstractDocumentParser
  3. DocumentParser
  4. AnyRef
  5. Any
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DocumentParserUsingStax(inputFactory: XMLInputFactory, converterToDocument: ConverterToDocument[Iterator[XMLEvent]])

    Permalink

Value Members

  1. final def !=(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. val converterToDocument: ConverterToDocument[Iterator[XMLEvent]]

    Permalink
  7. final def eq(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  8. def equals(arg0: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  9. def finalize(): Unit

    Permalink
    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  10. final def getClass(): Class[_]

    Permalink
    Definition Classes
    AnyRef → Any
  11. def hashCode(): Int

    Permalink
    Definition Classes
    AnyRef → Any
  12. val inputFactory: XMLInputFactory

    Permalink
  13. final def isInstanceOf[T0]: Boolean

    Permalink
    Definition Classes
    Any
  14. final def ne(arg0: AnyRef): Boolean

    Permalink
    Definition Classes
    AnyRef
  15. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  16. final def notifyAll(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. def parse(inputSource: InputSource): Document

    Permalink

    Parses the input source into a yaidom Document.

    Parses the input source into a yaidom Document. Closes the input stream or reader afterwards.

    Definition Classes
    DocumentParserUsingStaxDocumentParser
  18. final def parse(file: File): Document

    Permalink

    Parses the content of the given File into a eu.cdevreeze.yaidom.simple.Document.

    Parses the content of the given File into a eu.cdevreeze.yaidom.simple.Document.

    Definition Classes
    AbstractDocumentParserDocumentParser
  19. final def parse(uri: URI): Document

    Permalink

    Parses the content of the given URI into a eu.cdevreeze.yaidom.simple.Document.

    Parses the content of the given URI into a eu.cdevreeze.yaidom.simple.Document.

    Definition Classes
    AbstractDocumentParserDocumentParser
  20. final def parse(inputStream: InputStream): Document

    Permalink

    Parses the content of the given input stream into a eu.cdevreeze.yaidom.simple.Document.

    Parses the content of the given input stream into a eu.cdevreeze.yaidom.simple.Document.

    Definition Classes
    AbstractDocumentParserDocumentParser
  21. final def synchronized[T0](arg0: ⇒ T0): T0

    Permalink
    Definition Classes
    AnyRef
  22. def toString(): String

    Permalink
    Definition Classes
    AnyRef → Any
  23. final def wait(): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long, arg1: Int): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  25. final def wait(arg0: Long): Unit

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  26. def withConverterToDocument(newConverterToDocument: ConverterToDocument[Iterator[XMLEvent]]): DocumentParserUsingStax

    Permalink

    Returns an adapted copy having the passed ConverterToDocument.

    Returns an adapted copy having the passed ConverterToDocument. This method makes it possible to use an adapted converter, which may be needed depending on the JAXP implementation used.

Inherited from AbstractDocumentParser

Inherited from DocumentParser

Inherited from AnyRef

Inherited from Any

Ungrouped