eu.cdevreeze.yaidom.parse

DocumentParserUsingStax

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. This would make it possible to adapt the conversion from StAX events to yaidom Document, for example.

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
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new DocumentParserUsingStax(inputFactory: XMLInputFactory)

Value Members

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

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

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

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

    Definition Classes
    Any
  5. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  6. final def eq(arg0: AnyRef): Boolean

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

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

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

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

    Definition Classes
    AnyRef → Any
  11. val inputFactory: XMLInputFactory

  12. final def isInstanceOf[T0]: Boolean

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

    Definition Classes
    AnyRef
  14. final def notify(): Unit

    Definition Classes
    AnyRef
  15. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  16. def parse(inputStream: InputStream): Document

    Parses the input stream into a yaidom Document.

    Parses the input stream into a yaidom Document. Closes the input stream afterwards.

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

    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
  18. final def parse(uri: URI): Document

    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
  19. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  20. def toString(): String

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

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AbstractDocumentParser

Inherited from DocumentParser

Inherited from AnyRef

Inherited from Any

Ungrouped