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, converterToDocument: ConverterToDocument[Iterator[XMLEvent]])

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. val converterToDocument: ConverterToDocument[Iterator[XMLEvent]]

  9. final def eq(arg0: AnyRef): Boolean

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

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

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

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

    Definition Classes
    AnyRef → Any
  14. val inputFactory: XMLInputFactory

  15. final def isInstanceOf[T0]: Boolean

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

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

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

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

    Definition Classes
    AnyRef
  23. def toString(): String

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

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

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

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

    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