include::../shared-doc/attributes.adoc[]

= xml-jaxp: Upload and Parse an XML File Using DOM or SAX
:author: Bartosz Baranowski
:level: Intermediate
:technologies: JAXP, SAX, DOM, Servlet

[abstract]
The `xml-jaxp` quickstart demonstrates how to use Servlet and JSF to upload an XML file to {productName} and validate and parse it using DOM or SAX.

:standalone-server-type: default
:archiveType: war

//*************************************************
// Shared CD and Product Release content
//*************************************************

== What is it?

The `xml-jaxp` quickstart is a simple Java EE JAXP example that demonstrates how to use Servlet 3.0 and JSF to upload an XML file to _{productNameFull}_ and parse it using DOM or SAX, both of which are built into Java. It also shows how to use modules available in {productName}.

This quickstart provides an example XML schema and document file to use when testing this quickstart.

* The XML schema is located here: `__QUICKSTART_HOME__/src/main/resources/catalog.xsd`
* The XML document is located here: `__QUICKSTART_HOME__/src/main/resources/catalog.xml`

//*************************************************
// Product Release content only
//*************************************************

ifndef::EAPCDRelease[]

// System Requirements
include::../shared-doc/system-requirements.adoc[leveloffset=+1]
// Use of {jbossHomeName}
include::../shared-doc/use-of-jboss-home-name.adoc[leveloffset=+1]
// Start the {productName} Standalone Server
include::../shared-doc/start-the-standalone-server.adoc[leveloffset=+1]
// Build and Deploy the Quickstart
include::../shared-doc/build-and-deploy-the-quickstart.adoc[leveloffset=+1]

== Access the Application

The application will be running at the following URL: http://localhost:8080/{artifactId}/.

To test the quickstart, follow these steps.

. Click the *Browse* button and navigate to the `__QUICKSTART_HOME__/src/main/resources/catalog.xml` file.
. Click the *Upload* button. The XML file content is parsed and displayed on the page.
. You should see the following output in the server console that shows the DOMXMLParser was used:
+
[source,options="nowrap"]
----
INFO  [stdout] (http-/127.0.0.1:8080-1) Parsing the document using the DOMXMLParser!
----

To enable the alternative SAXXMLParser parser:

. Remove the comments that surround the alternate parser element in the `WEB-INF/beans.xml` file.
. Redeploy the application using the instructions above and access the application in a browser at the following URL: http://localhost:8080/{artifactId}/.
. Click the *Browse* button and navigate to the `__QUICKSTART_HOME__/src/main/resources/catalog.xml` file.
. Click the *Upload* button. The XML file content is parsed and displayed on the page.
. You should now see following output in the server console:
+
[source,options="nowrap"]
----
INFO  [stdout] (http-/127.0.0.1:8080-1) Parsing the document using the SAXXMLParser!
----

//  Undeploy the Quickstart
include::../shared-doc/undeploy-the-quickstart.adoc[leveloffset=+1]
// Run the Quickstart in Red Hat JBoss Developer Studio or Eclipse
include::../shared-doc/run-the-quickstart-in-jboss-developer-studio.adoc[leveloffset=+1]
//  Debug the Application
include::../shared-doc/debug-the-application.adoc[leveloffset=+1]

endif::[]

//*************************************************
// CD Release content only
//*************************************************

ifdef::EAPCDRelease[]

// Getting Started with OpenShift
include::../shared-doc/cd-openshift-getting-started.adoc[leveloffset=+1]
//Prepare OpenShift for Quickstart Deployment
include::../shared-doc/cd-create-project.adoc[leveloffset=+1]
// Import the Latest {xpaasproduct-shortname} Image Streams and Templates
include::../shared-doc/cd-import-imagestreams-templates.adoc[leveloffset=+1]
// Deploy the {ProductShortName} Source-to-Image (S2I) Quickstart to OpenShift
include::../shared-doc/cd-deploy-project.adoc[leveloffset=+1]
// OpenShift Post Deployment Tasks: This is not currently needed.
// include::../shared-doc/cd-post-deployment-tasks.adoc[leveloffset=+1]

endif::[]

