Skip to content
mikebevz edited this page Jan 7, 2011 · 36 revisions

Legko XML

Overview

Legko XML is a set of classes helping you to send/receive XML messages.

Features

Requirements

  • PHP 5.3 or higher, due to heavy use of PHP namespaces
  • XSL extension, libxslt 1.1.x - tested on 1.1.23
  • LibXML extension, version 2.6.x, tested on 2.6.32
  • DOM extension
    • XPath Support enabled
    • Schema Support enabled

Project structure

/lib - 3rd party libraries
/resources - XML Schema files used for testing
/src - Source code
     /com/mikebevz/xsd2php
     /tools
             /legko.php - Command line interface
/test - Unit tests

Planned features

  • Create XSD schema from PHP classes
  • WSDL 2.0

Usage

Compile schema

   use com\mikebevz\xsd2php;
   $xsd2php = new xsd2php\Xsd2Php("path/to/schema.xsd");
   $xsd2php->saveClasses("path/to/generated/files", true);

Second argument in saveClasses method defines whether create a directory if it doesn't exist. See test/Xsd2PhpTest.php for examples.

Marshalling XML

On example of UBL Order schema:

   use com\mikebevz\xsd2php;
   use oasis\names\specification\ubl\schema\xsd\Order_2;
   $order = new Order_2\Order(); // Generated PHP model
   // set $order properties here
   $php2xml = new xsd2php\Php2Xml();
   $xml = $php2xml->getXml($order);

Unmarshalling XML

   use com\mikebevz\xsd2php;
   $xml = file_get_contents('path/to/your.xml');
   $model = new yourModel();
   $bind = new xsd2php\Bind();  
   $myUnmarshalledModel = $bind->bindXml($xml, $model);

Running tests

From command line

 $ cd test 
 $ phpunit

will start all available tests.

References

http://www.ibm.com/developerworks/webservices/library/ws-whichwsdl/