Bitrix Site Manager

CXMLCreator

CXMLCreator is a class that represents an XML document tag containing attributes, child elements, text data and CDATA.

Methods

Method Description
CXMLCreator(
 string tag,
 boolean cdata
)
Standard constructor. Takes the name of the tag as an input parameter.
static
CXMLCreator
createTagAttributed(
 string heavyTag
)
Creates a new tag (CXMLCreator) based on the tag name heavyTag in a special format.
static
CXMLCreator
encodeValueLight(
 string name,
 AnyType Value
)
Creates an XML tree of a document with the name Name and a structure Value.
Name is the tag name in the heavyTag format of createTagAttributed.
Value can be any data type, e.g. nested associated arrays

See the example below.
setCDATA Sets the tag CDATA contents.
setAttribute Sets the tag attribute.
setData Sets the tag text.
setName Sets the tag name.
addChild Adds an element to a list of child items.
getChildrenCount Returns the number of children elements.
getXML Returns an XML document as a string.
getXMLHeader Returns the header of an XML document.

Using SOAP server requests in a SOAP handler



class CMSSOAPResearch extends CSOAPServerResponser
{
    ...

    function ProcessRequestBody(&$cserver, $body) 
    {
        $functionName = $body->name();
        $namespaceURI = $body->namespaceURI();
        $requestNode = $body;
        
        if ($functionName == "Registration")
        {
            $root = new CXMLCreator("RegistrationResponse");
            $root->setAttribute("xmlns", "urn:Microsoft.Search");
            
            $regres = new CXMLCreator("RegistrationResult");
            $root->addChild($regres);
                        
            $prup = new CXMLCreator("ProviderUpdate");
            $prup->setAttribute("xmlns", "urn:Microsoft.Search.Registration.Response");
            $prup->setAttribute("revision", "1");             
            $prup->setAttribute("build", "1");
            $regres->addChild($prup);
            
            $stat = new CXMLCreator("Status");
            $stat->setData("SUCCESS");
            $prup->addChild($stat);
                        
            $providers = array(
                
                "Provider" => array (
                    "Message" => "Test service.",
                    "Id" => "{$this->provider_id}",
                    "Name" => "Тестовая служба. {$this->add_tittle}",
                    "QueryPath" => $this->query_path,
                    "RegistrationPath" => $this->registration_path,
                    "AboutPath" => "http://www.bitrix.ru/",
                    "Type" => "SOAP",
                    "Revision" => "1",
                    "Services" => array(
                        "Service" => array(
                            "Id" => "{$this->service_id}",
                            "Name" => "Тестовая служба. {$this->add_tittle}",
                            "Description" => "SOAP server test service.",
                            "Copyright" => "(c) Bitrix.",
                            "Display" => "On",
                            "Category" => "ECOMMERCE_GENERAL",
                            "Parental" => "Unsupported",
                        )
                    )                        
                )                    
            
            );

            $providersEncoded = CSOAPRequest::encodeValueLight("Providers", $providers);
            $prup->addChild($providersEncoded);        
            
            ...
            
            return true;
        }
        
        return false;
    }
}