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: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

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

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

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

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

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

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

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

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

    Definition Classes
    AnyRef → Any
  13. val inputFactory: XMLInputFactory

  14. final def isInstanceOf[T0]: Boolean

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

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

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

    Definition Classes
    AnyRef
  18. 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
  19. 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
  20. 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
  21. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  22. def toString(): String

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

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

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

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from AbstractDocumentParser

Inherited from DocumentParser

Inherited from AnyRef

Inherited from Any

Ungrouped