Package net.sf.saxon.type

## Class StringConverter

- java.lang.Object
- - net.sf.saxon.type.Converter
  - - net.sf.saxon.type.StringConverter

- Direct Known Subclasses:
    `StringConverter.StringToAnyURI`, `StringConverter.StringToBase64Binary`, `StringConverter.StringToBoolean`, `StringConverter.StringToDate`, `StringConverter.StringToDateTime`, `StringConverter.StringToDateTimeStamp`, `StringConverter.StringToDayTimeDuration`, `StringConverter.StringToDecimal`, `StringConverter.StringToDerivedStringSubtype`, `StringConverter.StringToDuration`, `StringConverter.StringToFloat`, `StringConverter.StringToGDay`, `StringConverter.StringToGMonth`, `StringConverter.StringToGMonthDay`, `StringConverter.StringToGYear`, `StringConverter.StringToGYearMonth`, `StringConverter.StringToHexBinary`, `StringConverter.StringToInteger`, `StringConverter.StringToIntegerSubtype`, `StringConverter.StringToLanguage`, `StringConverter.StringToNCName`, `StringConverter.StringToNMTOKEN`, `StringConverter.StringToNonStringDerivedType`, `StringConverter.StringToNormalizedString`, `StringConverter.StringToNotation`, `StringConverter.StringToQName`, `StringConverter.StringToString`, `StringConverter.StringToStringSubtype`, `StringConverter.StringToTime`, `StringConverter.StringToToken`, `StringConverter.StringToUnionConverter`, `StringConverter.StringToUntypedAtomic`, `StringConverter.StringToYearMonthDuration`, `StringToDouble`

      public abstract class StringConverter
      extends Converter

  A `Converter` that accepts a string as input. This subclass of Converter is provided to avoid having to wrap the string into a StringValue prior to conversion. Every Converter whose source type is xs:string must be an instance of this subclass.

  The input to a StringConverter can also be an xs:untypedAtomic value, since the conversion semantics are always the same as from a string.

  A StringConverter also provides a method to validate that a string is valid against the target type, without actually performing the conversion.

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class | Description
    --- | --- | ---
    `static class` | `StringConverter.StringToAnyURI` | Converts string to anyURI
    `static class` | `StringConverter.StringToBase64Binary` | Converts string to base64
    `static class` | `StringConverter.StringToBoolean` | Converts a string to a boolean
    `static class` | `StringConverter.StringToDate` | Converts a string to a date
    `static class` | `StringConverter.StringToDateTime` | Converts a string to a dateTime
    `static class` | `StringConverter.StringToDateTimeStamp` | Converts a string to a dateTimeStamp
    `static class` | `StringConverter.StringToDayTimeDuration` | Converts a string to a dayTimeDuration
    `static class` | `StringConverter.StringToDecimal` | Converts a string to an xs:decimal
    `static class` | `StringConverter.StringToDerivedStringSubtype` | Converts from xs;string to a user-defined type derived from a built-in subtype of xs:string
    `static class` | `StringConverter.StringToDuration` | Converts a string to a duration
    `static class` | `StringConverter.StringToFloat` | Converts a string to xs:float
    `static class` | `StringConverter.StringToGDay` | Converts a string to a gDay
    `static class` | `StringConverter.StringToGMonth` | Converts a string to a gMonth
    `static class` | `StringConverter.StringToGMonthDay` | Converts a string to a gMonthDay
    `static class` | `StringConverter.StringToGYear` | Converts a string to a gYear
    `static class` | `StringConverter.StringToGYearMonth` | Converts a string to a gYearMonth
    `static class` | `StringConverter.StringToHexBinary` | Converts a string to hexBinary
    `static class` | `StringConverter.StringToInteger` | Converts a string to an integer
    `static class` | `StringConverter.StringToIntegerSubtype` | Converts a string to a built-in subtype of integer
    `static class` | `StringConverter.StringToLanguage` | Converts from xs:string to xs:language
    `static class` | `StringConverter.StringToName` | Converts from xs:string to xs:Name
    `static class` | `StringConverter.StringToNCName` | Converts from xs:string to xs:NCName, xs:ID, xs:IDREF, or xs:ENTITY
    `static class` | `StringConverter.StringToNMTOKEN` | Converts from xs:string to xs:NMTOKEN
    `static class` | `StringConverter.StringToNonStringDerivedType` | Converter from string to a derived type (derived from a type other than xs:string), where the derived type needs to retain the original string for validating against lexical facets such as pattern.
    `static class` | `StringConverter.StringToNormalizedString` | Converts from xs:string to xs:normalizedString
    `static class` | `StringConverter.StringToNotation` | Converts String to NOTATION
    `static class` | `StringConverter.StringToQName` | Converts String to QName
    `static class` | `StringConverter.StringToString` | Converts from xs:string or xs:untypedAtomic to xs:String
    `static class` | `StringConverter.StringToStringSubtype` | Converts from xs:string to a user-defined type derived directly from xs:string
    `static class` | `StringConverter.StringToTime` | Converts a string to a time
    `static class` | `StringConverter.StringToToken` | Converts from xs:string to xs:token
    `static class` | `StringConverter.StringToUnionConverter` | Converter from string to plain union types
    `static class` | `StringConverter.StringToUntypedAtomic` | Converts from xs:string or xs:untypedAtomic to xs:untypedAtomic
    `static class` | `StringConverter.StringToYearMonthDuration` | Converts a string to a yearMonthDuration

    - ### Nested classes/interfaces inherited from class net.sf.saxon.type.Converter

      `Converter.Base64BinaryToHexBinary, Converter.BooleanToDecimal, Converter.BooleanToDouble, Converter.BooleanToFloat, Converter.BooleanToInteger, Converter.DateTimeToDate, Converter.DateTimeToGDay, Converter.DateTimeToGMonth, Converter.DateTimeToGMonthDay, Converter.DateTimeToGYear, Converter.DateTimeToGYearMonth, Converter.DateTimeToTime, Converter.DateToDateTime, Converter.DecimalToInteger, Converter.DoubleToDecimal, Converter.DoubleToInteger, Converter.DownCastingConverter, Converter.DurationToDayTimeDuration, Converter.DurationToYearMonthDuration, Converter.FloatToDecimal, Converter.FloatToInteger, Converter.HexBinaryToBase64Binary, Converter.IdentityConverter, Converter.IntegerToDecimal, Converter.NotationToQName, Converter.NumericToBoolean, Converter.NumericToDecimal, Converter.NumericToDouble, Converter.NumericToFloat, Converter.NumericToInteger, Converter.PromoterToDouble, Converter.PromoterToFloat, Converter.QNameToNotation, Converter.ToStringConverter, Converter.ToUntypedAtomicConverter, Converter.TwoPhaseConverter, Converter.UnfailingConverter, Converter.UpCastingConverter`

  - ### Constructor Summary

    Constructors
    Modifier | Constructor | Description
    --- | --- | ---
    `protected` | `StringConverter()` | Create a StringConverter
    `protected` | `StringConverter​(ConversionRules rules)` | Create a StringConverter

  - ### Method Summary

    All Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `ConversionResult` | `convert​(AtomicValue input)` | Convert an atomic value from the source type to the target type
    `abstract ConversionResult` | `convertString​(java.lang.CharSequence input)` | Convert a string to the target type of this converter.
    `ValidationFailure` | `validate​(java.lang.CharSequence input)` | Validate a string for conformance to the target type, without actually performing the conversion

    - ### Methods inherited from class net.sf.saxon.type.Converter

      `convert, getConversionRules, getNamespaceResolver, isAlwaysSuccessful, setConversionRules, setNamespaceResolver`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### StringConverter

          protected StringConverter()

      Create a StringConverter

    - #### StringConverter

          protected StringConverter​(ConversionRules rules)

      Create a StringConverter
      Parameters:
        `rules` - the conversion rules to be applied

  - ### Method Detail

    - #### convertString

          public abstract ConversionResult convertString​(java.lang.CharSequence input)

      Convert a string to the target type of this converter.
      Parameters:
        `input` - the string to be converted
      Returns:
        either an `AtomicValue` of the appropriate type for this converter (if conversion succeeded), or a `ValidationFailure` if conversion failed.

    - #### validate

          public ValidationFailure validate​(java.lang.CharSequence input)

      Validate a string for conformance to the target type, without actually performing the conversion
      Parameters:
        `input` - the string to be validated
      Returns:
        null if validation is successful, or a ValidationFailure indicating the reasons for failure if unsuccessful

    - #### convert

          public ConversionResult convert​(AtomicValue input)

      Description copied from class: `Converter`
      Convert an atomic value from the source type to the target type
      Specified by:
        `convert` in class `Converter`
      Parameters:
        `input` - the atomic value to be converted, which the caller guarantees to be of the appropriate type for the converter. The results are undefined if the value is of the wrong type; possible outcomes are (apparent) success, or a ClassCastException.
      Returns:
        the result of the conversion, as an `AtomicValue`, if conversion succeeds, or a `ValidationFailure` object describing the reasons for failure if conversion is not possible. Note that the ValidationFailure object is not (and does not contain) an exception, because it does not necessarily result in an error being thrown, and creating exceptions on non-failure paths is expensive.