Apache Sling Content Parser

Parser for JCR repository content stored in files (e.g. JSON, FileVault XML).

Getting Started
===============

This component uses a Maven 3 (http://maven.apache.org/) build
environment. It requires a Java 7 JDK (or higher) and Maven (http://maven.apache.org/)
3.3.9 or later. We recommend to use the latest Maven version.

If you have Maven installed, you can compile and
package the jar using the following command:

    mvn package

See the Maven documentation for other build features.

The latest source code for this component is available in the
Subversion (http://subversion.tigris.org/) source repository of
the Apache Software Foundation. If you have Subversion installed,
you can checkout the latest source using the following command:

    svn checkout http://svn.apache.org/repos/asf/sling/trunk/bundles/jcr/contentparser

See the Subversion documentation for other source control features.
