<!DOCTYPE html >
<html>
        <head>
          <meta http-equiv="X-UA-Compatible" content="IE=edge" />
          <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
          <title>Apache Daffodil 3.1.0 Scala API  - org.apache.daffodil.sapi</title>
          <meta name="description" content="Apache Daffodil 3.1.0 Scala API - org.apache.daffodil.sapi" />
          <meta name="keywords" content="Apache Daffodil 3.1.0 Scala API org.apache.daffodil.sapi" />
          <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
          
      
      <link href="../../../../lib/index.css" media="screen" type="text/css" rel="stylesheet" />
      <link href="../../../../lib/template.css" media="screen" type="text/css" rel="stylesheet" />
      <link href="../../../../lib/diagrams.css" media="screen" type="text/css" rel="stylesheet" id="diagrams-css" />
      <script type="text/javascript" src="../../../../lib/jquery.min.js"></script>
      <script type="text/javascript" src="../../../../lib/jquery.panzoom.min.js"></script>
      <script type="text/javascript" src="../../../../lib/jquery.mousewheel.min.js"></script>
      <script type="text/javascript" src="../../../../lib/index.js"></script>
      <script type="text/javascript" src="../../../../index.js"></script>
      <script type="text/javascript" src="../../../../lib/scheduler.js"></script>
      <script type="text/javascript" src="../../../../lib/template.js"></script>
      
      <script type="text/javascript">
        /* this variable can be used by the JS to determine the path to the root document */
        var toRoot = '../../../../';
      </script>
    
        </head>
        <body>
      <div id="search">
        <span id="doc-title">Apache Daffodil 3.1.0 Scala API<span id="doc-version"></span></span>
        <span class="close-results"><span class="left">&lt;</span> Back</span>
        <div id="textfilter">
          <span class="input">
            <input autocapitalize="none" placeholder="Search" id="index-input" type="text" accesskey="/" />
            <i class="clear material-icons"></i>
            <i id="search-icon" class="material-icons"></i>
          </span>
        </div>
    </div>
      <div id="search-results">
        <div id="search-progress">
          <div id="progress-fill"></div>
        </div>
        <div id="results-content">
          <div id="entity-results"></div>
          <div id="member-results"></div>
        </div>
      </div>
      <div id="content-scroll-container" style="-webkit-overflow-scrolling: touch;">
        <div id="content-container" style="-webkit-overflow-scrolling: touch;">
          <div id="subpackage-spacer">
            <div id="packages">
              <h1>Packages</h1>
              <ul>
                <li name="_root_.root" visbl="pub" class="indented0 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="_root_"></a><a id="root:_root_"></a>
      <span class="permalink">
      <a href="../../../../index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="This is the documentation for the Apache Daffodil Scala API." href="../../../../index.html"><span class="name">root</span></a>
      </span>
      
      <p class="shortcomment cmt">This is the documentation for the Apache Daffodil Scala API.</p><div class="fullcomment"><div class="comment cmt"><p>This is the documentation for the Apache Daffodil Scala API.</p><h5> Package structure </h5><p><a href="" class="extype" name="org.apache.daffodil.sapi">org.apache.daffodil.sapi</a> - Provides the classes necessary to compile DFDL schemas, parse and unparse files using the compiled objects, and retrieve results and parsing diagnostics</p><p><a href="../udf/index.html" class="extype" name="org.apache.daffodil.udf">org.apache.daffodil.udf</a> - Provides the classes necessary to create User Defined Functions to extend the DFDL expression language</p></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../../../../index.html" class="extype" name="_root_">root</a></dd></dl></div>
    </li><li name="_root_.org" visbl="pub" class="indented1 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="org"></a><a id="org:org"></a>
      <span class="permalink">
      <a href="../../../../org/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="" href="../../../index.html"><span class="name">org</span></a>
      </span>
      
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../../../../index.html" class="extype" name="_root_">root</a></dd></dl></div>
    </li><li name="org.apache" visbl="pub" class="indented2 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="apache"></a><a id="apache:apache"></a>
      <span class="permalink">
      <a href="../../../../org/apache/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="" href="../../index.html"><span class="name">apache</span></a>
      </span>
      
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../../../index.html" class="extype" name="org">org</a></dd></dl></div>
    </li><li name="org.apache.daffodil" visbl="pub" class="indented3 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="daffodil"></a><a id="daffodil:daffodil"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="" href="../index.html"><span class="name">daffodil</span></a>
      </span>
      
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../../index.html" class="extype" name="org.apache">apache</a></dd></dl></div>
    </li><li name="org.apache.daffodil.sapi" visbl="pub" class="indented4 current" data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="sapi"></a><a id="sapi:sapi"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <span class="name">sapi</span>
      </span>
      
      <p class="shortcomment cmt">Provides the classes necessary to compile DFDL schemas, parse and
unparse files using the compiled objects, and retrieve results and
parsing diagnostics</p><div class="fullcomment"><div class="comment cmt"><p>Provides the classes necessary to compile DFDL schemas, parse and
unparse files using the compiled objects, and retrieve results and
parsing diagnostics</p><h5> Overview </h5><p>The <a href="Daffodil$.html" class="extype" name="org.apache.daffodil.sapi.Daffodil">Daffodil</a> object is a factory object to create a <a href="Compiler.html" class="extype" name="org.apache.daffodil.sapi.Compiler">Compiler</a>. The
<a href="Compiler.html" class="extype" name="org.apache.daffodil.sapi.Compiler">Compiler</a> provides a method to compile a provided DFDL schema into a
<a href="ProcessorFactory.html" class="extype" name="org.apache.daffodil.sapi.ProcessorFactory">ProcessorFactory</a>, which creates a <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> c = Daffodil.compiler()
<span class="kw">val</span> pf = c.compileFile(file)
<span class="kw">val</span> dp = pf.onPath(<span class="lit">"/"</span>)</pre><p>The <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> provides the necessary functions to parse and unparse
data, returning a <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a> or <a href="UnparseResult.html" class="extype" name="org.apache.daffodil.sapi.UnparseResult">UnparseResult</a>, respectively. These
contain information about the parse/unparse, such as whether or not the
processing succeeded with any diagnostic information.</p><p>The <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> also provides two functions that can be used to perform parsing/unparsing
via the SAX API. The first creates a <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> which is used for parsing, and the
second creates a <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a> which is used for unparsing.</p><pre><span class="kw">val</span> xmlReader = dp.newXMLReaderInstance
<span class="kw">val</span> unparseContentHandler = dp.newContentHandlerInstance(output)</pre><p>The <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> has several methods that allow one to set properties and handlers
(such as ContentHandlers or ErrorHandlers) for the reader. One can use any
contentHandler/errorHandler as long as they extend the org.xml.sax.ContentHandler and
org.xml.sax.ErrorHandler interfaces respectively. One can also set properties for the
<a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> using <a href="DaffodilParseXMLReader.html#setProperty(name:String,value:AnyRef):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#setProperty">DaffodilParseXMLReader.setProperty</a>.</p><p>The following properties can be set as follows:</p><p><i>The constants below have literal values starting with
"urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:sax:" and ending with "BlobDirectory",
"BlobPrefix" and "BlobSuffix" respectively.</i></p><pre>xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBDIRECTORY,
 Paths.get(System.getProperty(<span class="lit">"java.io.tmpdir"</span>))) <span class="cmt">// value type: java.nio.file.Paths</span>
xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBPREFIX, <span class="lit">"daffodil-sax-"</span>) <span class="cmt">// value type String</span>
xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBSUFFIX, <span class="lit">".bin"</span>) <span class="cmt">// value type String</span></pre><p>The properties can be retrieved using the same variables with
<a href="DaffodilParseXMLReader.html#getProperty(name:String):AnyRef" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#getProperty">DaffodilParseXMLReader.getProperty</a> and casting
to the appropriate type as listed above.</p><p>The following handlers can be set as follows:</p><pre>xmlReader.setContentHandler(contentHandler)
xmlReader.setErrorHandler(errorHandler)</pre><p>The handlers above must implement the following interfaces respectively:</p><pre>org.xml.sax.ContentHandler
org.xml.sax.ErrorHandler</pre><p>The <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a> can be found as a property within the <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> using this
uri: &quot;urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:sax:ParseResult&quot; or
<a href="DaffodilParseXMLReader$.html#DAFFODIL_SAX_URN_PARSERESULT:String" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#DAFFODIL_SAX_URN_PARSERESULT">DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT</a></p><p>In order for a successful unparse to happen, the SAX API requires the
unparse to be kicked off by a parse call to any org.xml.sax.XMLReader implementation that has the
<a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a> registered as its content handler. To retrieve the <a href="UnparseResult.html" class="extype" name="org.apache.daffodil.sapi.UnparseResult">UnparseResult</a>,
one can use <a href="DaffodilUnparseContentHandler.html#getUnparseResult:org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler#getUnparseResult">DaffodilUnparseContentHandler.getUnparseResult</a> once the XMLReader.parse run is
complete.</p><h6> Parse </h6><h6> Dataprocessor Parse </h6><p>The <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a> method accepts input data to parse in the form of a <a href="io/InputSourceDataInputStream.html" class="extype" name="org.apache.daffodil.sapi.io.InputSourceDataInputStream">InputSourceDataInputStream</a> and an <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a> to determine
the output representation of the infoset (e.g. Scala XML Nodes, JDOM2 Documents, etc.):</p><pre><span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
<span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(data)
<span class="kw">val</span> pr = dp.parse(is, scalaOutputter)
<span class="kw">val</span> node = scalaOutputter.getResult</pre><p>The <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a> method is thread-safe and may be called multiple times without the need to
create other data processors. However, <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a>'s are not
thread safe, requiring a unique instance per thread. An <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a>
should call <a href="infoset/InfosetOutputter.html#reset():Unit" class="extmbr" name="org.apache.daffodil.sapi.infoset.InfosetOutputter#reset">InfosetOutputter.reset</a> before reuse (or a new one
should be allocated). For example:</p><pre><span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
files.foreach { f <span class="kw">=&gt;</span> {
  outputter.reset
  <span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(<span class="kw">new</span> FileInputStream(f))
  <span class="kw">val</span> pr = dp.parse(is, scalaOutputter)
  <span class="kw">val</span> node = scalaOutputter.getResult
}</pre><p>One can repeat calls to parse() using the same InputSourceDataInputStream to continue parsing
where the previous parse ended. For example:</p><pre><span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(dataStream)
<span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
<span class="kw">val</span> keepParsing = <span class="kw">true</span>
<span class="kw">while</span> (keepParsing &amp;&amp; is.hasData()) {
  scalaOutputter.reset()
  <span class="kw">val</span> pr = dp.parse(is, jdomOutputter)
  ...
  keepParsing = !pr.isError()
}</pre><h6> SAX Parse </h6><p>The <a href="DaffodilParseXMLReader.html#parse(isdis:org.apache.daffodil.sapi.io.InputSourceDataInputStream):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#parse">DaffodilParseXMLReader.parse</a> method accepts input data to parse in the form of a
<a href="io/InputSourceDataInputStream.html" class="extype" name="org.apache.daffodil.sapi.io.InputSourceDataInputStream">InputSourceDataInputStream</a>. The output representation of the
infoset, as well as how parse errors are handled, are dependent on the content handler and the
error handler provided to the <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a>. For example, the org.jdom2.input.sax.SAXHandler
provides a JDOM representation, whereas other ContentHandlers may output directly to a
java.io.OutputStream or java.io.Writer.</p><pre><span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
<span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(data)
xmlReader.parse(is)
<span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
<span class="kw">val</span> doc = saxHandler.getDocument</pre><p>The <a href="DaffodilParseXMLReader.html#parse(isdis:org.apache.daffodil.sapi.io.InputSourceDataInputStream):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#parse">DaffodilParseXMLReader.parse</a> method is not thread-safe and may only be called again/reused once
a parse operation is completed. This can be done multiple times without the need to create new
DaffodilParseXMLReaders, ContentHandlers or ErrorHandlers. It might be necessary to reset whatever
ContentHandler is used (or allocate a new one). A thread-safe implementation would require unique
instances of the DaffodilParseXMLReader and its components. For example:</p><pre><span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
files.foreach { f <span class="kw">=&gt;</span> {
  contentHandler.reset
  <span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(<span class="kw">new</span> FileInputStream(f))
  xmlReader.parse(is)
  <span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
  <span class="kw">val</span> doc = saxHandler.getDocument
}</pre><p>The value of the supported features cannot be changed during a parse, and the parse will run
with the value of the features as they were when the parse was kicked off. To run a parse with
different feature values, one must wait until the running parse finishes, set the feature values
using the XMLReader's setFeature and run the parse again.</p><p>One can repeat calls to parse() using the same InputSourceDataInputStream to continue parsing
where the previous parse ended. For example:</p><pre><span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(dataStream)
<span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
<span class="kw">val</span> keepParsing = <span class="kw">true</span>
<span class="kw">while</span> (keepParsing &amp;&amp; is.hasData()) {
  contentHandler.reset()
  xmlReader.parse(is)
  <span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
  ...
  keepParsing = !pr.isError()
}</pre><h6> Unparse </h6><h6> Dataprocessor Unparse </h6><p>The same <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> used for parse can be used to unparse an infoset
via the <a href="DataProcessor.html#unparse(input:org.apache.daffodil.sapi.infoset.InfosetInputter,output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#unparse">DataProcessor.unparse</a> method. An
<a href="infoset/InfosetInputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetInputter">InfosetInputter</a> provides the infoset to unparse, with the unparsed
data written to the provided java.nio.channels.WritableByteChannel. For example:</p><pre><span class="kw">val</span> inputter = <span class="kw">new</span> ScalaXMLInfosetInputter(node)
<span class="kw">val</span> ur = dp.unparse(inputter, wbc)</pre><h6> SAX Unparse </h6><p>In order to kick off an unparse via the SAX API, one must register the <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a>
as the contentHandler for an XMLReader implementation. The call to the
<a href="DataProcessor.html#newContentHandlerInstance(output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.DaffodilUnparseContentHandler" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#newContentHandlerInstance">DataProcessor.newContentHandlerInstance</a> method
must be provided with the java.nio.channels.WritableByteChannel, where the unparsed data ought to
be written to. Any XMLReader implementation is permissible, as long as they have XML
Namespace support.</p><pre><span class="kw">val</span> is = <span class="kw">new</span> ByteArrayInputStream(data)
<span class="kw">val</span> os = <span class="kw">new</span> ByteArrayOutputStream()
<span class="kw">val</span> wbc = java.nio.channels.Channels.newChannel(os)
<span class="kw">val</span> unparseContentHandler = dp.newContentHandlerInstance(wbc)
<span class="kw">val</span> xmlReader = SAXParserFactory.newInstance.newSAXParser.getXMLReader
xmlReader.setContentHandler(unparseContentHandler)
<span class="kw">try</span> {
 xmlReader.parse(is)
} <span class="kw">catch</span> {
 <span class="kw">case</span> _: DaffodilUnparseErrorSAXException <span class="kw">=&gt;</span> ...
 <span class="kw">case</span> _: DaffodilUnhandledSAXException <span class="kw">=&gt;</span> ...
}</pre><p>The call to the XMLReader.parse method must be wrapped in a try/catch, as <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a>
relies on throwing an exception to end processing in the case of anyerrors/failures.
There are two kinds of errors to expect: <a href="DaffodilUnparseErrorSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseErrorSAXException">DaffodilUnparseErrorSAXException</a>, for the case when
the <a href="UnparseResult.html#isError():Boolean" class="extmbr" name="org.apache.daffodil.sapi.UnparseResult#isError">UnparseResult.isError</a>, and <a href="DaffodilUnhandledSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnhandledSAXException">DaffodilUnhandledSAXException</a>, for any other errors.</p><p>In the case of an <a href="DaffodilUnhandledSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnhandledSAXException">DaffodilUnhandledSAXException</a>,<a href="DaffodilUnparseContentHandler.html#getUnparseResult:org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler#getUnparseResult">DaffodilUnparseContentHandler.getUnparseResult</a>
will return null.</p><pre><span class="kw">try</span> {
  xmlReader.parse(<span class="kw">new</span> InputSource(is))
} <span class="kw">catch</span> {
  <span class="kw">case</span> _: DaffodilUnhandledSAXException <span class="kw">=&gt;</span> ...
  <span class="kw">case</span> _: DaffodilUnparseErrorSAXException <span class="kw">=&gt;</span> ...
}
<span class="kw">val</span> ur = unparseContentHandler.getUnparseResult</pre><h5> Failures and Diagnostics </h5><p>It is possible that failures could occur during the creation of the
<a href="ProcessorFactory.html" class="extype" name="org.apache.daffodil.sapi.ProcessorFactory">ProcessorFactory</a>, <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>, or <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a>. However, rather than
throwing an exception on error (e.g. invalid DFDL schema, parse
error, etc), these classes extend <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a>, which is used to
determine if an error occurred, and any diagnostic information (see
<a href="Diagnostic.html" class="extype" name="org.apache.daffodil.sapi.Diagnostic">Diagnostic</a>) related to the step. Thus, before continuing, one must check
<a href="WithDiagnostics.html#isError():Boolean" class="extmbr" name="org.apache.daffodil.sapi.WithDiagnostics#isError">WithDiagnostics.isError</a>. For example:</p><pre><span class="kw">val</span> pf = c.compile(file)
<span class="kw">if</span> (pf.isError()) {
  <span class="kw">val</span> diags = pf.getDiagnostics()
  diags.foreach { d <span class="kw">=&gt;</span>
    System.out.println(d.toString())
  }
  <span class="kw">return</span> -<span class="num">1</span>;
}</pre><h5> Saving and Reloading Parsers </h5><p>In some cases, it may be beneficial to save a parser and reload it.
For example, when starting up, it may be quicker to reload an
already compiled parser than to compile it from scratch. To save a
<a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> dp = pf.onPath(<span class="lit">"/"</span>)
dp.save(saveFile);</pre><p>And to restore a saved <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> dp = Daffodil.reload(saveFile);</pre><p>And use like below:</p><pre><span class="kw">val</span> pr = dp.parse(data);</pre><p>or</p><pre><span class="kw">val</span> xmlReader = dp.newXMLReaderInstance
... <span class="cmt">// setting appropriate handlers</span>
xmlReader.parse(data)
<span class="kw">val</span> pr = xmlReader.getProperty(<span class="lit">"...ParseResult"</span>)</pre></div><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../index.html" class="extype" name="org.apache.daffodil">daffodil</a></dd></dl></div>
    </li><li name="org.apache.daffodil.sapi.debugger" visbl="pub" class="indented5 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="debugger"></a><a id="debugger:debugger"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/debugger/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="Provides the classes necessary to perform parse tracing or create a custom debugger" href="debugger/index.html"><span class="name">debugger</span></a>
      </span>
      
      <p class="shortcomment cmt">Provides the classes necessary to perform parse tracing or create a custom debugger</p><div class="fullcomment"><div class="comment cmt"><p>Provides the classes necessary to perform parse tracing or create a custom debugger</p><h5> Overview </h5><p>Daffodil comes with one prebuilt debugger, the <a href="debugger/TraceDebuggerRunner.html" class="extype" name="org.apache.daffodil.sapi.debugger.TraceDebuggerRunner">TraceDebuggerRunner</a>, which outputs
verbose information during the parsing processes, which can be used to aid
in debugging a DFDL schema. For example, the <a href="debugger/TraceDebuggerRunner.html" class="extype" name="org.apache.daffodil.sapi.debugger.TraceDebuggerRunner">TraceDebuggerRunner</a> can be use like so:</p><pre><span class="kw">val</span> tdr = <span class="kw">new</span> TraceDebuggerRunner()
Daffodil.setDebugger(tdr)</pre><p>Additionally, one may create their own debugger runner by implementing the
methods in the <a href="debugger/DebuggerRunner.html" class="extype" name="org.apache.daffodil.sapi.debugger.DebuggerRunner">DebuggerRunner</a>.</p><p>Once the debugger is set, it must then be turned on, like so:</p><pre>Daffodil.setDebugging(<span class="kw">true</span>);</pre></div></div>
    </li><li name="org.apache.daffodil.sapi.infoset" visbl="pub" class="indented5 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="infoset"></a><a id="infoset:infoset"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/infoset/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="Defines various classes used control the representation of the infoset for parse and unparse." href="infoset/index.html"><span class="name">infoset</span></a>
      </span>
      
      <p class="shortcomment cmt">Defines various classes used control the representation of the infoset for parse and unparse.</p><div class="fullcomment"><div class="comment cmt"><p>Defines various classes used control the representation of the infoset for parse and unparse.
Classes that extend <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a> are provided to the <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a>
method to deteremine how to output an infoset. These classes are not
guaranteed to be thread-safe. Classes that extend <a href="infoset/InfosetInputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetInputter">InfosetInputter</a> are
provided to the <a href="DataProcessor.html#unparse(input:org.apache.daffodil.sapi.infoset.InfosetInputter,output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#unparse">DataProcessor.unparse</a> method to determine how to read in
an infoset. A new InfosetOutputter is required for each call to unparse().
</p></div></div>
    </li><li name="org.apache.daffodil.sapi.io" visbl="pub" class="indented5 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="io"></a><a id="io:io"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/io/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="" href="io/index.html"><span class="name">io</span></a>
      </span>
      
      
    </li><li name="org.apache.daffodil.sapi.logger" visbl="pub" class="indented5 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="logger"></a><a id="logger:logger"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/logger/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="Provides the classes necessary to receive logging messages from Daffodil." href="logger/index.html"><span class="name">logger</span></a>
      </span>
      
      <p class="shortcomment cmt">Provides the classes necessary to receive logging messages from Daffodil.</p><div class="fullcomment"><div class="comment cmt"><p>Provides the classes necessary to receive logging messages from Daffodil.</p><h5> Overview </h5><p>Daffodil comes with three prebuilt log writers:</p><ul><li><a href="logger/ConsoleLogWriter.html" class="extype" name="org.apache.daffodil.sapi.logger.ConsoleLogWriter">ConsoleLogWriter</a> - writes all log messages to stdout</li><li><a href="logger/FileLogWriter.html" class="extype" name="org.apache.daffodil.sapi.logger.FileLogWriter">FileLogWriter</a> - writes all log messages to file</li><li><a href="logger/NullLogWriter.html" class="extype" name="org.apache.daffodil.sapi.logger.NullLogWriter">NullLogWriter</a> - drop all log messages</li></ul><p>To use one of these log writers, create and instance of it and pass it to
<a href="Daffodil$.html#setLogWriter(lw:org.apache.daffodil.sapi.logger.LogWriter):Unit" class="extmbr" name="org.apache.daffodil.sapi.Daffodil#setLogWriter">Daffodil.setLogWriter</a>. For example, to write all logs to <code>/var/log/daffodil.log</code>:</p><pre><span class="kw">val</span> lw = <span class="kw">new</span> FileLogWriter(<span class="kw">new</span> File(<span class="lit">"/var/log/daffodil.log"</span>))
Daffodil.setLogWriter(lw)</pre><p>One may also change the log level using <a href="Daffodil$.html#setLoggingLevel(lvl:org.apache.daffodil.sapi.logger.LogLevel.Value):Unit" class="extmbr" name="org.apache.daffodil.sapi.Daffodil#setLoggingLevel">Daffodil.setLoggingLevel</a>, which
defaults to <a href="logger/LogLevel$.html#Info:org.apache.daffodil.sapi.logger.LogLevel.Value" class="extmbr" name="org.apache.daffodil.sapi.logger.LogLevel#Info">LogLevel.Info</a> if not set. For example, to change the log
level to <a href="logger/LogLevel$.html#Warning:org.apache.daffodil.sapi.logger.LogLevel.Value" class="extmbr" name="org.apache.daffodil.sapi.logger.LogLevel#Warning">LogLevel.Warning</a>:</p><pre>Daffodil.setLoggingLevel(LogLevel.Warning);</pre></div></div>
    </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="Compiler.html" title="Compile DFDL schemas into ProcessorFactory's or reload saved parsers into DataProcessor's."></a>
                        <a href="Compiler.html" title="Compile DFDL schemas into ProcessorFactory's or reload saved parsers into DataProcessor's.">Compiler</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="object" href="Daffodil$.html" title="Factory object to create a Compiler and set global configurations"></a>
                        <a href="Daffodil$.html" title="Factory object to create a Compiler and set global configurations">Daffodil</a>
                      </li><li class="current-entities indented4">
                        <a class="object" href="DaffodilParseXMLReader$.html" title="The full URIs needed for setting/getting properties for the DaffodilParseXMLReader"></a>
                        <a class="class" href="DaffodilParseXMLReader.html" title="SAX Method of parsing schema and getting the DFDL Infoset via designated org.xml.sax.ContentHandler, based on the org.xml.sax.XMLReader interface"></a>
                        <a href="DaffodilParseXMLReader.html" title="SAX Method of parsing schema and getting the DFDL Infoset via designated org.xml.sax.ContentHandler, based on the org.xml.sax.XMLReader interface">DaffodilParseXMLReader</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="DaffodilUnhandledSAXException.html" title="This exception will be thrown when an unexpected error occurs during the SAX unparse"></a>
                        <a href="DaffodilUnhandledSAXException.html" title="This exception will be thrown when an unexpected error occurs during the SAX unparse">DaffodilUnhandledSAXException</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="DaffodilUnparseContentHandler.html" title="Accepts SAX callback events from any SAX XMLReader for unparsing"></a>
                        <a href="DaffodilUnparseContentHandler.html" title="Accepts SAX callback events from any SAX XMLReader for unparsing">DaffodilUnparseContentHandler</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="DaffodilUnparseErrorSAXException.html" title="This exception will be thrown when unparseResult.isError returns true during a SAX Unparse"></a>
                        <a href="DaffodilUnparseErrorSAXException.html" title="This exception will be thrown when unparseResult.isError returns true during a SAX Unparse">DaffodilUnparseErrorSAXException</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="DataLocation.html" title="Information related to a location in data"></a>
                        <a href="DataLocation.html" title="Information related to a location in data">DataLocation</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="DataProcessor.html" title="Compiled version of a DFDL Schema, used to parse data and get the DFDL infoset"></a>
                        <a href="DataProcessor.html" title="Compiled version of a DFDL Schema, used to parse data and get the DFDL infoset">DataProcessor</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="Diagnostic.html" title="Class containing diagnostic information"></a>
                        <a href="Diagnostic.html" title="Class containing diagnostic information">Diagnostic</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="InvalidParserException.html" title="This exception will be thrown as a result of attempting to reload a saved parser that is invalid (not a parser file, corrupt, etc.) or is not in the GZIP format."></a>
                        <a href="InvalidParserException.html" title="This exception will be thrown as a result of attempting to reload a saved parser that is invalid (not a parser file, corrupt, etc.) or is not in the GZIP format.">InvalidParserException</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="InvalidUsageException.html" title="This exception will be thrown as a result of an invalid usage of the Daffodil API"></a>
                        <a href="InvalidUsageException.html" title="This exception will be thrown as a result of an invalid usage of the Daffodil API">InvalidUsageException</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="LocationInSchemaFile.html" title="Information related to locations in DFDL schema files"></a>
                        <a href="LocationInSchemaFile.html" title="Information related to locations in DFDL schema files">LocationInSchemaFile</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="ParseResult.html" title="Result of calling DataProcessor.parse, containing any diagnostic information, and the final data location"></a>
                        <a href="ParseResult.html" title="Result of calling DataProcessor.parse, containing any diagnostic information, and the final data location">ParseResult</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="ProcessorFactory.html" title="Factory to create DataProcessor's, used for parsing data"></a>
                        <a href="ProcessorFactory.html" title="Factory to create DataProcessor's, used for parsing data">ProcessorFactory</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="UnparseResult.html" title="Result of calling DataProcessor.unparse, containing diagnostic information"></a>
                        <a href="UnparseResult.html" title="Result of calling DataProcessor.unparse, containing diagnostic information">UnparseResult</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="object" href="ValidationMode$.html" title="Validation modes for validating the resulting infoset against the DFDL schema"></a>
                        <a href="ValidationMode$.html" title="Validation modes for validating the resulting infoset against the DFDL schema">ValidationMode</a>
                      </li><li class="current-entities indented4">
                        <span class="separator"></span>
                        <a class="class" href="WithDiagnostics.html" title="Abstract class that adds diagnostic information to classes that extend it."></a>
                        <a href="WithDiagnostics.html" title="Abstract class that adds diagnostic information to classes that extend it.">WithDiagnostics</a>
                      </li><li name="org.apache.daffodil.udf" visbl="pub" class="indented4 " data-isabs="false" fullComment="yes" group="Ungrouped">
      <a id="udf"></a><a id="udf:udf"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/udf/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <a title="" href="../udf/index.html"><span class="name">udf</span></a>
      </span>
      
      <div class="fullcomment"><dl class="attributes block"> <dt>Definition Classes</dt><dd><a href="../index.html" class="extype" name="org.apache.daffodil">daffodil</a></dd></dl></div>
    </li>
              </ul>
            </div>
          </div>
          <div id="content">
            <body class="package value">
      <div id="definition">
        <div class="big-circle package">p</div>
        <p id="owner"><a href="../../../index.html" class="extype" name="org">org</a>.<a href="../../index.html" class="extype" name="org.apache">apache</a>.<a href="../index.html" class="extype" name="org.apache.daffodil">daffodil</a></p>
        <h1>sapi<span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/index.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span></h1>
        
      </div>

      <h4 id="signature" class="signature">
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">package</span>
      </span>
      <span class="symbol">
        <span class="name">sapi</span>
      </span>
      </h4>

      
          <div id="comment" class="fullcommenttop"><div class="comment cmt"><p>Provides the classes necessary to compile DFDL schemas, parse and
unparse files using the compiled objects, and retrieve results and
parsing diagnostics</p><h5> Overview </h5><p>The <a href="Daffodil$.html" class="extype" name="org.apache.daffodil.sapi.Daffodil">Daffodil</a> object is a factory object to create a <a href="Compiler.html" class="extype" name="org.apache.daffodil.sapi.Compiler">Compiler</a>. The
<a href="Compiler.html" class="extype" name="org.apache.daffodil.sapi.Compiler">Compiler</a> provides a method to compile a provided DFDL schema into a
<a href="ProcessorFactory.html" class="extype" name="org.apache.daffodil.sapi.ProcessorFactory">ProcessorFactory</a>, which creates a <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> c = Daffodil.compiler()
<span class="kw">val</span> pf = c.compileFile(file)
<span class="kw">val</span> dp = pf.onPath(<span class="lit">"/"</span>)</pre><p>The <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> provides the necessary functions to parse and unparse
data, returning a <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a> or <a href="UnparseResult.html" class="extype" name="org.apache.daffodil.sapi.UnparseResult">UnparseResult</a>, respectively. These
contain information about the parse/unparse, such as whether or not the
processing succeeded with any diagnostic information.</p><p>The <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> also provides two functions that can be used to perform parsing/unparsing
via the SAX API. The first creates a <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> which is used for parsing, and the
second creates a <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a> which is used for unparsing.</p><pre><span class="kw">val</span> xmlReader = dp.newXMLReaderInstance
<span class="kw">val</span> unparseContentHandler = dp.newContentHandlerInstance(output)</pre><p>The <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> has several methods that allow one to set properties and handlers
(such as ContentHandlers or ErrorHandlers) for the reader. One can use any
contentHandler/errorHandler as long as they extend the org.xml.sax.ContentHandler and
org.xml.sax.ErrorHandler interfaces respectively. One can also set properties for the
<a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> using <a href="DaffodilParseXMLReader.html#setProperty(name:String,value:AnyRef):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#setProperty">DaffodilParseXMLReader.setProperty</a>.</p><p>The following properties can be set as follows:</p><p><i>The constants below have literal values starting with
"urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:sax:" and ending with "BlobDirectory",
"BlobPrefix" and "BlobSuffix" respectively.</i></p><pre>xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBDIRECTORY,
 Paths.get(System.getProperty(<span class="lit">"java.io.tmpdir"</span>))) <span class="cmt">// value type: java.nio.file.Paths</span>
xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBPREFIX, <span class="lit">"daffodil-sax-"</span>) <span class="cmt">// value type String</span>
xmlReader.setProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_BLOBSUFFIX, <span class="lit">".bin"</span>) <span class="cmt">// value type String</span></pre><p>The properties can be retrieved using the same variables with
<a href="DaffodilParseXMLReader.html#getProperty(name:String):AnyRef" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#getProperty">DaffodilParseXMLReader.getProperty</a> and casting
to the appropriate type as listed above.</p><p>The following handlers can be set as follows:</p><pre>xmlReader.setContentHandler(contentHandler)
xmlReader.setErrorHandler(errorHandler)</pre><p>The handlers above must implement the following interfaces respectively:</p><pre>org.xml.sax.ContentHandler
org.xml.sax.ErrorHandler</pre><p>The <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a> can be found as a property within the <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a> using this
uri: &quot;urn:ogf:dfdl:2013:imp:daffodil.apache.org:2018:sax:ParseResult&quot; or
<a href="DaffodilParseXMLReader$.html#DAFFODIL_SAX_URN_PARSERESULT:String" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#DAFFODIL_SAX_URN_PARSERESULT">DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT</a></p><p>In order for a successful unparse to happen, the SAX API requires the
unparse to be kicked off by a parse call to any org.xml.sax.XMLReader implementation that has the
<a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a> registered as its content handler. To retrieve the <a href="UnparseResult.html" class="extype" name="org.apache.daffodil.sapi.UnparseResult">UnparseResult</a>,
one can use <a href="DaffodilUnparseContentHandler.html#getUnparseResult:org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler#getUnparseResult">DaffodilUnparseContentHandler.getUnparseResult</a> once the XMLReader.parse run is
complete.</p><h6> Parse </h6><h6> Dataprocessor Parse </h6><p>The <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a> method accepts input data to parse in the form of a <a href="io/InputSourceDataInputStream.html" class="extype" name="org.apache.daffodil.sapi.io.InputSourceDataInputStream">InputSourceDataInputStream</a> and an <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a> to determine
the output representation of the infoset (e.g. Scala XML Nodes, JDOM2 Documents, etc.):</p><pre><span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
<span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(data)
<span class="kw">val</span> pr = dp.parse(is, scalaOutputter)
<span class="kw">val</span> node = scalaOutputter.getResult</pre><p>The <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a> method is thread-safe and may be called multiple times without the need to
create other data processors. However, <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a>'s are not
thread safe, requiring a unique instance per thread. An <a href="infoset/InfosetOutputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetOutputter">InfosetOutputter</a>
should call <a href="infoset/InfosetOutputter.html#reset():Unit" class="extmbr" name="org.apache.daffodil.sapi.infoset.InfosetOutputter#reset">InfosetOutputter.reset</a> before reuse (or a new one
should be allocated). For example:</p><pre><span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
files.foreach { f <span class="kw">=&gt;</span> {
  outputter.reset
  <span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(<span class="kw">new</span> FileInputStream(f))
  <span class="kw">val</span> pr = dp.parse(is, scalaOutputter)
  <span class="kw">val</span> node = scalaOutputter.getResult
}</pre><p>One can repeat calls to parse() using the same InputSourceDataInputStream to continue parsing
where the previous parse ended. For example:</p><pre><span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(dataStream)
<span class="kw">val</span> scalaOutputter = <span class="kw">new</span> ScalaXMLInfosetOutputter()
<span class="kw">val</span> keepParsing = <span class="kw">true</span>
<span class="kw">while</span> (keepParsing &amp;&amp; is.hasData()) {
  scalaOutputter.reset()
  <span class="kw">val</span> pr = dp.parse(is, jdomOutputter)
  ...
  keepParsing = !pr.isError()
}</pre><h6> SAX Parse </h6><p>The <a href="DaffodilParseXMLReader.html#parse(isdis:org.apache.daffodil.sapi.io.InputSourceDataInputStream):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#parse">DaffodilParseXMLReader.parse</a> method accepts input data to parse in the form of a
<a href="io/InputSourceDataInputStream.html" class="extype" name="org.apache.daffodil.sapi.io.InputSourceDataInputStream">InputSourceDataInputStream</a>. The output representation of the
infoset, as well as how parse errors are handled, are dependent on the content handler and the
error handler provided to the <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a>. For example, the org.jdom2.input.sax.SAXHandler
provides a JDOM representation, whereas other ContentHandlers may output directly to a
java.io.OutputStream or java.io.Writer.</p><pre><span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
<span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(data)
xmlReader.parse(is)
<span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
<span class="kw">val</span> doc = saxHandler.getDocument</pre><p>The <a href="DaffodilParseXMLReader.html#parse(isdis:org.apache.daffodil.sapi.io.InputSourceDataInputStream):Unit" class="extmbr" name="org.apache.daffodil.sapi.DaffodilParseXMLReader#parse">DaffodilParseXMLReader.parse</a> method is not thread-safe and may only be called again/reused once
a parse operation is completed. This can be done multiple times without the need to create new
DaffodilParseXMLReaders, ContentHandlers or ErrorHandlers. It might be necessary to reset whatever
ContentHandler is used (or allocate a new one). A thread-safe implementation would require unique
instances of the DaffodilParseXMLReader and its components. For example:</p><pre><span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
files.foreach { f <span class="kw">=&gt;</span> {
  contentHandler.reset
  <span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(<span class="kw">new</span> FileInputStream(f))
  xmlReader.parse(is)
  <span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
  <span class="kw">val</span> doc = saxHandler.getDocument
}</pre><p>The value of the supported features cannot be changed during a parse, and the parse will run
with the value of the features as they were when the parse was kicked off. To run a parse with
different feature values, one must wait until the running parse finishes, set the feature values
using the XMLReader's setFeature and run the parse again.</p><p>One can repeat calls to parse() using the same InputSourceDataInputStream to continue parsing
where the previous parse ended. For example:</p><pre><span class="kw">val</span> is = <span class="kw">new</span> InputSourceDataInputStream(dataStream)
<span class="kw">val</span> contentHandler = <span class="kw">new</span> SAXHandler()
xmlReader.setContentHandler(contentHandler)
<span class="kw">val</span> keepParsing = <span class="kw">true</span>
<span class="kw">while</span> (keepParsing &amp;&amp; is.hasData()) {
  contentHandler.reset()
  xmlReader.parse(is)
  <span class="kw">val</span> pr = xmlReader.getProperty(DaffodilParseXMLReader.DAFFODIL_SAX_URN_PARSERESULT)
  ...
  keepParsing = !pr.isError()
}</pre><h6> Unparse </h6><h6> Dataprocessor Unparse </h6><p>The same <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a> used for parse can be used to unparse an infoset
via the <a href="DataProcessor.html#unparse(input:org.apache.daffodil.sapi.infoset.InfosetInputter,output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#unparse">DataProcessor.unparse</a> method. An
<a href="infoset/InfosetInputter.html" class="extype" name="org.apache.daffodil.sapi.infoset.InfosetInputter">InfosetInputter</a> provides the infoset to unparse, with the unparsed
data written to the provided java.nio.channels.WritableByteChannel. For example:</p><pre><span class="kw">val</span> inputter = <span class="kw">new</span> ScalaXMLInfosetInputter(node)
<span class="kw">val</span> ur = dp.unparse(inputter, wbc)</pre><h6> SAX Unparse </h6><p>In order to kick off an unparse via the SAX API, one must register the <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a>
as the contentHandler for an XMLReader implementation. The call to the
<a href="DataProcessor.html#newContentHandlerInstance(output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.DaffodilUnparseContentHandler" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#newContentHandlerInstance">DataProcessor.newContentHandlerInstance</a> method
must be provided with the java.nio.channels.WritableByteChannel, where the unparsed data ought to
be written to. Any XMLReader implementation is permissible, as long as they have XML
Namespace support.</p><pre><span class="kw">val</span> is = <span class="kw">new</span> ByteArrayInputStream(data)
<span class="kw">val</span> os = <span class="kw">new</span> ByteArrayOutputStream()
<span class="kw">val</span> wbc = java.nio.channels.Channels.newChannel(os)
<span class="kw">val</span> unparseContentHandler = dp.newContentHandlerInstance(wbc)
<span class="kw">val</span> xmlReader = SAXParserFactory.newInstance.newSAXParser.getXMLReader
xmlReader.setContentHandler(unparseContentHandler)
<span class="kw">try</span> {
 xmlReader.parse(is)
} <span class="kw">catch</span> {
 <span class="kw">case</span> _: DaffodilUnparseErrorSAXException <span class="kw">=&gt;</span> ...
 <span class="kw">case</span> _: DaffodilUnhandledSAXException <span class="kw">=&gt;</span> ...
}</pre><p>The call to the XMLReader.parse method must be wrapped in a try/catch, as <a href="DaffodilUnparseContentHandler.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler">DaffodilUnparseContentHandler</a>
relies on throwing an exception to end processing in the case of anyerrors/failures.
There are two kinds of errors to expect: <a href="DaffodilUnparseErrorSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnparseErrorSAXException">DaffodilUnparseErrorSAXException</a>, for the case when
the <a href="UnparseResult.html#isError():Boolean" class="extmbr" name="org.apache.daffodil.sapi.UnparseResult#isError">UnparseResult.isError</a>, and <a href="DaffodilUnhandledSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnhandledSAXException">DaffodilUnhandledSAXException</a>, for any other errors.</p><p>In the case of an <a href="DaffodilUnhandledSAXException.html" class="extype" name="org.apache.daffodil.sapi.DaffodilUnhandledSAXException">DaffodilUnhandledSAXException</a>,<a href="DaffodilUnparseContentHandler.html#getUnparseResult:org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler#getUnparseResult">DaffodilUnparseContentHandler.getUnparseResult</a>
will return null.</p><pre><span class="kw">try</span> {
  xmlReader.parse(<span class="kw">new</span> InputSource(is))
} <span class="kw">catch</span> {
  <span class="kw">case</span> _: DaffodilUnhandledSAXException <span class="kw">=&gt;</span> ...
  <span class="kw">case</span> _: DaffodilUnparseErrorSAXException <span class="kw">=&gt;</span> ...
}
<span class="kw">val</span> ur = unparseContentHandler.getUnparseResult</pre><h5> Failures and Diagnostics </h5><p>It is possible that failures could occur during the creation of the
<a href="ProcessorFactory.html" class="extype" name="org.apache.daffodil.sapi.ProcessorFactory">ProcessorFactory</a>, <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>, or <a href="ParseResult.html" class="extype" name="org.apache.daffodil.sapi.ParseResult">ParseResult</a>. However, rather than
throwing an exception on error (e.g. invalid DFDL schema, parse
error, etc), these classes extend <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a>, which is used to
determine if an error occurred, and any diagnostic information (see
<a href="Diagnostic.html" class="extype" name="org.apache.daffodil.sapi.Diagnostic">Diagnostic</a>) related to the step. Thus, before continuing, one must check
<a href="WithDiagnostics.html#isError():Boolean" class="extmbr" name="org.apache.daffodil.sapi.WithDiagnostics#isError">WithDiagnostics.isError</a>. For example:</p><pre><span class="kw">val</span> pf = c.compile(file)
<span class="kw">if</span> (pf.isError()) {
  <span class="kw">val</span> diags = pf.getDiagnostics()
  diags.foreach { d <span class="kw">=&gt;</span>
    System.out.println(d.toString())
  }
  <span class="kw">return</span> -<span class="num">1</span>;
}</pre><h5> Saving and Reloading Parsers </h5><p>In some cases, it may be beneficial to save a parser and reload it.
For example, when starting up, it may be quicker to reload an
already compiled parser than to compile it from scratch. To save a
<a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> dp = pf.onPath(<span class="lit">"/"</span>)
dp.save(saveFile);</pre><p>And to restore a saved <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>:</p><pre><span class="kw">val</span> dp = Daffodil.reload(saveFile);</pre><p>And use like below:</p><pre><span class="kw">val</span> pr = dp.parse(data);</pre><p>or</p><pre><span class="kw">val</span> xmlReader = dp.newXMLReaderInstance
... <span class="cmt">// setting appropriate handlers</span>
xmlReader.parse(data)
<span class="kw">val</span> pr = xmlReader.getProperty(<span class="lit">"...ParseResult"</span>)</pre></div><div class="toggleContainer block">
          <span class="toggle">
            Linear Supertypes
          </span>
          <div class="superTypes hiddenContent"><span class="extype" name="scala.AnyRef">AnyRef</span>, <span class="extype" name="scala.Any">Any</span></div>
        </div></div>
        

      <div id="mbrsel">
        <div class="toggle"></div>
        <div id="memberfilter">
          <i class="material-icons arrow"></i>
          <span class="input">
            <input id="mbrsel-input" placeholder="Filter all members" type="text" accesskey="/" />
          </span>
          <i class="clear material-icons"></i>
        </div>
        <div id="filterby">
          <div id="order">
            <span class="filtertype">Ordering</span>
            <ol>
              
              <li class="alpha in"><span>Alphabetic</span></li>
              <li class="inherit out"><span>By Inheritance</span></li>
            </ol>
          </div>
          <div class="ancestors">
                  <span class="filtertype">Inherited<br />
                  </span>
                  <ol id="linearization">
                    <li class="in" name="org.apache.daffodil.sapi"><span>sapi</span></li><li class="in" name="scala.AnyRef"><span>AnyRef</span></li><li class="in" name="scala.Any"><span>Any</span></li>
                  </ol>
                </div><div class="ancestors">
              <span class="filtertype"></span>
              <ol>
                <li class="hideall out"><span>Hide All</span></li>
                <li class="showall in"><span>Show All</span></li>
              </ol>
            </div>
          <div id="visbl">
              <span class="filtertype">Visibility</span>
              <ol><li class="public in"><span>Public</span></li><li class="all out"><span>All</span></li></ol>
            </div>
        </div>
      </div>

      <div id="template">
        <div id="allMembers">
        

        <div id="types" class="types members">
              <h3>Type Members</h3>
              <ol><li name="org.apache.daffodil.sapi.Compiler" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="CompilerextendsAnyRef"></a><a id="Compiler:Compiler"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/Compiler.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Compile DFDL schemas into ProcessorFactory's or reload saved parsers into DataProcessor's." href="Compiler.html"><span class="name">Compiler</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      
      <p class="shortcomment cmt">Compile DFDL schemas into <a href="ProcessorFactory.html" class="extype" name="org.apache.daffodil.sapi.ProcessorFactory">ProcessorFactory</a>'s or reload saved parsers into <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>'s.</p>
    </li><li name="org.apache.daffodil.sapi.DaffodilParseXMLReader" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DaffodilParseXMLReaderextendsXMLReader"></a><a id="DaffodilParseXMLReader:DaffodilParseXMLReader"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DaffodilParseXMLReader.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="SAX Method of parsing schema and getting the DFDL Infoset via designated org.xml.sax.ContentHandler, based on the org.xml.sax.XMLReader interface" href="DaffodilParseXMLReader.html"><span class="name">DaffodilParseXMLReader</span></a><span class="result"> extends <span class="extype" name="org.xml.sax.XMLReader">XMLReader</span></span>
      </span>
      
      <p class="shortcomment cmt">SAX Method of parsing schema and getting the DFDL Infoset via designated
org.xml.sax.ContentHandler, based on the org.xml.sax.XMLReader interface
</p>
    </li><li name="org.apache.daffodil.sapi.DaffodilUnhandledSAXException" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DaffodilUnhandledSAXExceptionextendsSAXException"></a><a id="DaffodilUnhandledSAXException:DaffodilUnhandledSAXException"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DaffodilUnhandledSAXException.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="This exception will be thrown when an unexpected error occurs during the SAX unparse" href="DaffodilUnhandledSAXException.html"><span class="name">DaffodilUnhandledSAXException</span></a><span class="result"> extends <span class="extype" name="org.xml.sax.SAXException">SAXException</span></span>
      </span>
      
      <p class="shortcomment cmt">This exception will be thrown when an unexpected error occurs during the SAX unparse
</p>
    </li><li name="org.apache.daffodil.sapi.DaffodilUnparseContentHandler" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DaffodilUnparseContentHandlerextendsContentHandler"></a><a id="DaffodilUnparseContentHandler:DaffodilUnparseContentHandler"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DaffodilUnparseContentHandler.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Accepts SAX callback events from any SAX XMLReader for unparsing" href="DaffodilUnparseContentHandler.html"><span class="name">DaffodilUnparseContentHandler</span></a><span class="result"> extends <span class="extype" name="org.xml.sax.ContentHandler">ContentHandler</span></span>
      </span>
      
      <p class="shortcomment cmt">Accepts SAX callback events from any SAX XMLReader for unparsing
</p>
    </li><li name="org.apache.daffodil.sapi.DaffodilUnparseErrorSAXException" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DaffodilUnparseErrorSAXExceptionextendsSAXException"></a><a id="DaffodilUnparseErrorSAXException:DaffodilUnparseErrorSAXException"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DaffodilUnparseErrorSAXException.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="This exception will be thrown when unparseResult.isError returns true during a SAX Unparse" href="DaffodilUnparseErrorSAXException.html"><span class="name">DaffodilUnparseErrorSAXException</span></a><span class="result"> extends <span class="extype" name="org.xml.sax.SAXException">SAXException</span></span>
      </span>
      
      <p class="shortcomment cmt">This exception will be thrown when unparseResult.isError returns true during a SAX Unparse
</p>
    </li><li name="org.apache.daffodil.sapi.DataLocation" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DataLocationextendsAnyRef"></a><a id="DataLocation:DataLocation"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DataLocation.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Information related to a location in data" href="DataLocation.html"><span class="name">DataLocation</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      
      <p class="shortcomment cmt">Information related to a location in data
</p>
    </li><li name="org.apache.daffodil.sapi.DataProcessor" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DataProcessorextendsWithDiagnosticswithSerializable"></a><a id="DataProcessor:DataProcessor"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DataProcessor.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Compiled version of a DFDL Schema, used to parse data and get the DFDL infoset" href="DataProcessor.html"><span class="name">DataProcessor</span></a><span class="result"> extends <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a> with <span class="extype" name="scala.Serializable">Serializable</span></span>
      </span>
      
      <p class="shortcomment cmt">Compiled version of a DFDL Schema, used to parse data and get the DFDL infoset
</p>
    </li><li name="org.apache.daffodil.sapi.Diagnostic" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DiagnosticextendsAnyRef"></a><a id="Diagnostic:Diagnostic"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/Diagnostic.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Class containing diagnostic information" href="Diagnostic.html"><span class="name">Diagnostic</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      
      <p class="shortcomment cmt">Class containing diagnostic information
</p>
    </li><li name="org.apache.daffodil.sapi.InvalidParserException" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="InvalidParserExceptionextendsException"></a><a id="InvalidParserException:InvalidParserException"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/InvalidParserException.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="This exception will be thrown as a result of attempting to reload a saved parser that is invalid (not a parser file, corrupt, etc.) or is not in the GZIP format." href="InvalidParserException.html"><span class="name">InvalidParserException</span></a><span class="result"> extends <span class="extype" name="scala.Exception">Exception</span></span>
      </span>
      
      <p class="shortcomment cmt">This exception will be thrown as a result of attempting to reload a saved parser
that is invalid (not a parser file, corrupt, etc.) or
is not in the GZIP format.</p>
    </li><li name="org.apache.daffodil.sapi.InvalidUsageException" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="InvalidUsageExceptionextendsException"></a><a id="InvalidUsageException:InvalidUsageException"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/InvalidUsageException.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="This exception will be thrown as a result of an invalid usage of the Daffodil API" href="InvalidUsageException.html"><span class="name">InvalidUsageException</span></a><span class="result"> extends <span class="extype" name="scala.Exception">Exception</span></span>
      </span>
      
      <p class="shortcomment cmt">This exception will be thrown as a result of an invalid usage of the Daffodil API
</p>
    </li><li name="org.apache.daffodil.sapi.LocationInSchemaFile" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="LocationInSchemaFileextendsAnyRef"></a><a id="LocationInSchemaFile:LocationInSchemaFile"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/LocationInSchemaFile.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Information related to locations in DFDL schema files" href="LocationInSchemaFile.html"><span class="name">LocationInSchemaFile</span></a><span class="result"> extends <span class="extype" name="scala.AnyRef">AnyRef</span></span>
      </span>
      
      <p class="shortcomment cmt">Information related to locations in DFDL schema files
</p>
    </li><li name="org.apache.daffodil.sapi.ParseResult" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="ParseResultextendsWithDiagnostics"></a><a id="ParseResult:ParseResult"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/ParseResult.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Result of calling DataProcessor.parse, containing any diagnostic information, and the final data location" href="ParseResult.html"><span class="name">ParseResult</span></a><span class="result"> extends <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a></span>
      </span>
      
      <p class="shortcomment cmt">Result of calling <a href="DataProcessor.html#parse(input:org.apache.daffodil.sapi.io.InputSourceDataInputStream,output:org.apache.daffodil.sapi.infoset.InfosetOutputter):org.apache.daffodil.sapi.ParseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#parse">DataProcessor.parse</a>, containing
any diagnostic information, and the final data location
</p>
    </li><li name="org.apache.daffodil.sapi.ProcessorFactory" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="ProcessorFactoryextendsWithDiagnostics"></a><a id="ProcessorFactory:ProcessorFactory"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/ProcessorFactory.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Factory to create DataProcessor's, used for parsing data" href="ProcessorFactory.html"><span class="name">ProcessorFactory</span></a><span class="result"> extends <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a></span>
      </span>
      
      <p class="shortcomment cmt">Factory to create <a href="DataProcessor.html" class="extype" name="org.apache.daffodil.sapi.DataProcessor">DataProcessor</a>'s, used for parsing data
</p>
    </li><li name="org.apache.daffodil.sapi.UnparseResult" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="UnparseResultextendsWithDiagnostics"></a><a id="UnparseResult:UnparseResult"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/UnparseResult.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Result of calling DataProcessor.unparse, containing diagnostic information" href="UnparseResult.html"><span class="name">UnparseResult</span></a><span class="result"> extends <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a></span>
      </span>
      
      <p class="shortcomment cmt">Result of calling <a href="DataProcessor.html#unparse(input:org.apache.daffodil.sapi.infoset.InfosetInputter,output:java.nio.channels.WritableByteChannel):org.apache.daffodil.sapi.UnparseResult" class="extmbr" name="org.apache.daffodil.sapi.DataProcessor#unparse">DataProcessor.unparse</a>,
containing diagnostic information
</p>
    </li><li name="org.apache.daffodil.sapi.WithDiagnostics" visbl="pub" class="indented0 " data-isabs="true" fullComment="yes" group="Ungrouped">
      <a id="WithDiagnosticsextendsSerializable"></a><a id="WithDiagnostics:WithDiagnostics"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/WithDiagnostics.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier">abstract </span>
        <span class="kind">class</span>
      </span>
      <span class="symbol">
        <a title="Abstract class that adds diagnostic information to classes that extend it." href="WithDiagnostics.html"><span class="name">WithDiagnostics</span></a><span class="result"> extends <span class="extype" name="scala.Serializable">Serializable</span></span>
      </span>
      
      <p class="shortcomment cmt">Abstract class that adds diagnostic information to classes that extend it.</p><div class="fullcomment"><div class="comment cmt"><p>Abstract class that adds diagnostic information to classes that extend it.</p><p>When a function returns a class that extend this, one should call
<a href="WithDiagnostics.html#isError():Boolean" class="extmbr" name="org.apache.daffodil.sapi.WithDiagnostics#isError">WithDiagnostics.isError</a> on that class before performing any further
actions. If an error exists, any use of that class, aside from those
functions in <a href="WithDiagnostics.html" class="extype" name="org.apache.daffodil.sapi.WithDiagnostics">WithDiagnostics</a>, is invalid and will result in an
Exception.
</p></div></div>
    </li></ol>
            </div>

        

        <div class="values members">
              <h3>Value Members</h3>
              <ol>
                <li name="org.apache.daffodil.sapi.Daffodil" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="Daffodil"></a><a id="Daffodil:Daffodil"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/Daffodil$.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">object</span>
      </span>
      <span class="symbol">
        <a title="Factory object to create a Compiler and set global configurations" href="Daffodil$.html"><span class="name">Daffodil</span></a>
      </span>
      
      <p class="shortcomment cmt">Factory object to create a <a href="Compiler.html" class="extype" name="org.apache.daffodil.sapi.Compiler">Compiler</a> and set global configurations
</p>
    </li><li name="org.apache.daffodil.sapi.DaffodilParseXMLReader" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="DaffodilParseXMLReader"></a><a id="DaffodilParseXMLReader:DaffodilParseXMLReader"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/DaffodilParseXMLReader$.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">object</span>
      </span>
      <span class="symbol">
        <a title="The full URIs needed for setting/getting properties for the DaffodilParseXMLReader" href="DaffodilParseXMLReader$.html"><span class="name">DaffodilParseXMLReader</span></a>
      </span>
      
      <p class="shortcomment cmt">The full URIs needed for setting/getting properties for the <a href="DaffodilParseXMLReader.html" class="extype" name="org.apache.daffodil.sapi.DaffodilParseXMLReader">DaffodilParseXMLReader</a>
</p>
    </li><li name="org.apache.daffodil.sapi.ValidationMode" visbl="pub" class="indented0 " data-isabs="false" fullComment="no" group="Ungrouped">
      <a id="ValidationMode"></a><a id="ValidationMode:ValidationMode"></a>
      <span class="permalink">
      <a href="../../../../org/apache/daffodil/sapi/ValidationMode$.html" title="Permalink">
        <i class="material-icons"></i>
      </a>
    </span>
      <span class="modifier_kind">
        <span class="modifier"></span>
        <span class="kind">object</span>
      </span>
      <span class="symbol">
        <a title="Validation modes for validating the resulting infoset against the DFDL schema" href="ValidationMode$.html"><span class="name">ValidationMode</span></a><span class="result"> extends <span class="extype" name="scala.Enumeration">Enumeration</span></span>
      </span>
      
      <p class="shortcomment cmt">Validation modes for validating the resulting infoset against the DFDL schema
</p>
    </li>
              </ol>
            </div>

        

        
        </div>

        <div id="inheritedMembers">
        <div class="parent" name="scala.AnyRef">
              <h3>Inherited from <span class="extype" name="scala.AnyRef">AnyRef</span></h3>
            </div><div class="parent" name="scala.Any">
              <h3>Inherited from <span class="extype" name="scala.Any">Any</span></h3>
            </div>
        
        </div>

        <div id="groupedMembers">
        <div class="group" name="Ungrouped">
              <h3>Ungrouped</h3>
              
            </div>
        </div>

      </div>

      <div id="tooltip"></div>

      <div id="footer">  </div>
    </body>
          </div>
        </div>
      </div>
    </body>
      </html>
