# Package org.apache.sis.xml

Provides methods for marshalling and unmarshalling SIS objects in XML.

See: Description

- Interface Summary
  Interface | Description
  --- | ---
  IdentifiedObject | The interface for all SIS objects having identifiers.
  IdentifierMap | A map view of some or all identifiers in an identified object.
  IdentifierSpace<T> | Some identifier namespaces that are handled in a special way.
  NilObject | A marker interface for nil XML elements providing an explanation about why the information is absent.

- Class Summary
  Class | Description
  --- | ---
  MarshalContext | Context of a marshalling or unmarshalling process.
  MarshallerPool | Creates and configures `Marshaller` or `Unmarshaller` objects for use with SIS.
  Namespaces | Lists some namespaces URLs used by JAXB when (un)marshalling.
  NilReason | Explanation for a missing XML element.
  ReferenceResolver | Controls the (un)marshaller behavior regarding the `xlink` or `uuidref` attributes.
  ValueConverter | Performs conversions of XML element or attribute values encountered during XML (un)marshalling.
  XLink | The XML attributes defined by OGC in the xlink schema.
  XML | Provides convenience methods for marshalling and unmarshalling SIS objects.

- Enum Summary
  Enum | Description
  --- | ---
  XLink.Actuate | Communicates the desired timing of traversal from the starting resource to the ending resource.
  XLink.Show | Communicates the desired presentation of the ending resource on traversal from the starting resource.
  XLink.Type | The type of a `xlink`.

## Package org.apache.sis.xml Description

Provides methods for marshalling and unmarshalling SIS objects in XML. The XML format is compliant with ISO 19139 specification for metadata, and compliant with GML for referencing objects.

The main class in this package is `XML`, which provides property keys that can be used for configuring (un)marshallers and convenience static methods. For example the following code:

    XML.marshal(Citations.OGC, System.out);

will produce a string like below:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <gmd:CI_Citation xmlns:gmd="http://www.isotc211.org/2005/gmd"
                     xmlns:gco="http://www.isotc211.org/2005/gco">
      <gmd:title>
        <gco:CharacterString>Open Geospatial Consortium</gco:CharacterString>
      </gmd:title>
      ... much more XML below this point ...
    </gmd:CI_Citation>

Customizing the XML
In order to parse and format ISO 19139 compliant documents, SIS needs its own `Marshaller` and `Unmarshaller` instances (which are actually wrappers around standard instances). Those instances are created and cached by `MarshallerPool`, which is used internally by the above-cited `XML` class. However developers can instantiate their own `MarshallerPool` in order to get more control on the marshalling and unmarshalling processes, including the namespace URLs and the errors handling.

The most common namespace URLs are defined in the `Namespaces` class. The parsing of some objects like `URL` and `UUID`, together with the behavior in case of parsing error, can be specified by the `ValueConverter` class.

Since:
  0.3

Defined in the `sis-utility` module

Copyright © 2010–2017 The Apache Software Foundation. All rights reserved.