---
name: "SOAP::WSDL::Factory::Deserializer"
section: "3pm"
platform: "linux"
package: "libsoap-wsdl-perl"
version: "3.004-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SOAP::WSDL::Factory::Deserializer"
---

# SOAP::WSDL::Factory::Deserializer(3pm)

Factory for retrieving Deserializer objects

## NAME

SOAP::WSDL::Factory::Deserializer - Factory for retrieving Deserializer objects

## SYNOPSIS

```
 # from SOAP::WSDL::Client:
 $deserializer = SOAP::WSDL::Factory::Deserializer->get_deserializer({
     soap_version => $soap_version,
     class_resolver => $class_resolver,
 });
 # in deserializer class:
 package MyWickedDeserializer;
 use SOAP::WSDL::Factory::Deserializer;
 # register class as deserializer for SOAP1.2 messages
 SOAP::WSDL::Factory::Deserializer->register( '1.2' , __PACKAGE__ );
```

## DESCRIPTION

SOAP::WSDL::Factory::Deserializer serves as factory for retrieving deserializer objects for SOAP::WSDL.

The actual work is done by specific deserializer classes.

SOAP::WSDL::Deserializer tries to load one of the following classes:

- •

  The class registered for the scheme via **register()**

By default, SOAP::WSDL::Deserializer::XSD is registered for SOAP1.1 messages.

## METHODS

### register

```
 SOAP::WSDL::Deserializer->register('1.1', 'MyWickedDeserializer');
```

Globally registers a class for use as deserializer class.

### get\_deserializer

Returns an object of the deserializer class for this endpoint.

## WRITING YOUR OWN DESERIALIZER CLASS

Deserializer classes may register with SOAP::WSDL::Factory::Deserializer.

### Registering a deserializer

Registering a deserializer class with SOAP::WSDL::Factory::Deserializer is done by executing the following code where `$version` is the SOAP version the class should be used for, and `$class` is the class name.

```
 SOAP::WSDL::Factory::Deserializer->register( $version, $class);
```

To auto-register your transport class on loading, execute **register()** in your tranport class (see SYNOPSIS above).

### Deserializer package layout

Deserializer modules must be named equal to the deserializer class they contain. There can only be one deserializer class per deserializer module.

### Methods to implement

Deserializer classes must implement the following methods:

- •

  new

  Constructor.

- •

  deserialize

  Deserialize data from XML to arbitrary formats.

  **deserialize()** must return a fault indicating that deserializing failed if any error is encountered during the process of deserializing the XML message.

  The following positional parameters are passed to the deserialize method:

  ```
   $content   - the xml message
  ```

- •

  generate\_fault

  Generate a fault in the supported format. The following named parameters are passed as a single hash ref:

  ```
   code       - The fault code, e.g. 'soap:Server' or the like
   role       - The fault role (actor in SOAP1.1)
   message    - The fault message (faultstring in SOAP1.1)
  ```

## LICENSE AND COPYRIGHT

Copyright 2007 Martin Kutter. All rights reserved.

This file is part of SOAP-WSDL. You may distribute/modify it under the same terms as perl itself

## AUTHOR

Martin Kutter \<martin.kutter fen-net.de\>

## REPOSITORY INFORMATION

```
 $Rev: 176 $
 $LastChangedBy: kutterma $
 $Id: Serializer.pm 176 2007-08-31 15:28:29Z kutterma $
 $HeadURL: https://soap-wsdl.svn.sourceforge.net/svnroot/soap-wsdl/SOAP-WSDL/trunk/lib/SOAP/WSDL/Factory/Serializer.pm $
```
