XMLOPS Module

Daniel-Constantin Mierla

asipto.com

Table of Contents

1. Admin Guide
1. Overview
2. Dependencies
2.1. Kamailio Modules
2.2. External Libraries or Applications
3. Parameters
3.1. buf_size (integer)
3.2. xml_ns (str)
4. Pseudo-Variables
4.1. $xml(name=>spec)

List of Examples

1.1. Set buf_size parameter
1.2. Set xml_ns parameter
1.3. xml usage

Chapter 1. Admin Guide

1. Overview

This is a module implementing functions and pseudo-variables for XML operations.

2. Dependencies

2.1. Kamailio Modules

The following modules must be loaded before this module:

  • none.

2.2. External Libraries or Applications

The following libraries or applications must be installed before running kamailio with this module loaded:

  • libxml - for compilation from source, the development headers from this library are needed as well.

3. Parameters

3.1. buf_size (integer)

Maximum size of the XML buffer.

Default value is 4096.

Example 1.1. Set buf_size parameter

...
modparam("xmlops", "buf_size", 8192)
...

3.2. xml_ns (str)

Register xml namespace prefix. Parameter value must have the format: 'prefix=uri'. It can be set many times to cope with multiple namespaces without prefix.

This is useful when it is needed to access XML documents that specify xmlns without prefix, which is not XML-standard compliant, but it comes with SIP SIMPLE presence bodies.

Example 1.2. Set xml_ns parameter

...
modparam("xmlops", "xml_ns", "rpid=urn:ietf:params:xml:ns:pidf:rpid")
modparam("xmlops", "xml_ns", "pidf=urn:ietf:params:xml:ns:pidf")
...
$xml(x=>doc) = '<?xml version="1.0" encoding="utf-8"?>
    <presence xmlns="urn:ietf:params:xml:ns:pidf" entity="sip:test@mydomain.com">
        <tuple id="86ae65b7-42de-4399-b635-295caad13aac">
            <status><basic>none</basic></status>
        </tuple>
    </presence>';

xinfo("status: $xml(x=>xpath:/pidf:presence/pidf:tuple/pidf:status/pidf:basic)\n");
...

4. Pseudo-Variables

4.1.  $xml(name=>spec)

Pseudo-variable for XML document operations using xpath syntax. For more see the Pseudo-Variables Cookbook.

Example 1.3. xml usage

...
$xml(x=>doc)
    = '<?xml version="1.0" encoding="UTF-8"?><a><b>test</b></a>';
xlog("content of node b: $xml(x=>xpath:/a/b/text())\n");
$xml(x=>xpath:/a/b) = "1234";
...