# Pull parser support

StAX parser support (Java)

Saxon has for a number of releases included a sample module `StaxBridge` that allows Saxon to take input from a StAX parser (JSR 173) (specifically from an `XMLStreamReader`). This component is now included in the product, as class `net.sf.saxon.pull.StaxBridge`.

To see how to use Saxon with the StAX parser, see the examples in `PullExamples.java` in the `samples/java` directory. A `StaxBridge` object is like a `SAXSource` object in that it encapsulates a reference to the parser and a reference to the file being parsed; it implements the JAXP `Source` interface so it can be used directly as an argument to methods like `Transformer.transform()`.

This code has been tested with the Sun implementation, SJSXP, and with the Woodstox parser. In both cases the parser must be separately installed. Note that if you want to recompile the Saxon source code and you do not have SJSXP installed, you can simply remove the StaxBridge module from the compilation.

Normally the `StaxBridge` class will pick up whichever StAX parser is present on the Java classpath. To choose a specific parser, set the system property `javax.xml.stream.XMLInputFactory` to the relevant implementation class. For SJSXP this is `com.sun.xml.stream.ZephyrParserFactory`. For Woodstox it is `com.ctc.wstx.stax.WstxInputFactory`.

XmlParser support (.NET)

On the .NET platform, Saxon allows input to be obtained from the `XmlReader` class defined in the `System.Xml` namespace. This offers a pull parser interface very similar to the `XMLStreamReader` of StAX.

To use this parser from the `Saxon.Api` interface, create a `Processor` and an `XmlReader`, then call `processor.NewDocumentBuilder().Build(reader)`.

Next