LIBXO(3) BSD Library Functions Manual LIBXO(3)NAMExo_open_container — open (and close) container constructs
LIBRARY
library “libxo”
SYNOPSIS
#include <libxo/xo.h>
LIBXO(3) BSD Library Functions Manual LIBXO(3)NAMExo_open_container
xo_open_container_h
xo_open_container_hd
xo_open_container_d
xo_close_container
xo_close_container_h
xo_close_container_hd
xo_close_container_d — open and close containers
LIBRARY
library “libxo”
SYNOPSIS
int
xo_open_container(const char *name);
int
xo_open_container_h(xo_handle_t *handle, const char *name);
int
xo_open_container_hd(xo_handle_t *handle, const char *name);
int
xo_open_container_d(const char *name);
int
xo_close_container(const char *name);
int
xo_close_container_h(xo_handle_t *handle, const char *name);
int
xo_close_container_hd(xo_handle_t *handle);
int
xo_close_container_d(void);
DESCRIPTION
libxo represents two types of hierarchy: “containers” and “lists”. A
container appears once under a given parent where a list contains
instances that can appear multiple times. A container is used to hold
related fields and to give the data organization and scope. The con‐
tainer has no value, but serves to contain other nodes.
To open a container, call xo_open_container() or xo_open_container_h().
The former uses the default handle and the latter accepts a specific han‐
dle.
To close a level, use the xo_close_container() or xo_close_container_h()
functions.
Each open call should have a matching close call. If the XOF_WARN flag
is set and the name given does not match the name of the currently open
container, a warning will be generated.
Example:
xo_open_container("top");
xo_open_container("system");
xo_emit("{:host-name/%s%s%s", hostname,
domainname ? "." : "", domainname ?: "");
xo_close_container("system");
xo_close_container("top");
Sample Output:
Text:
my-host.example.org
XML:
<top>
<system>
<host-name>my-host.example.org</host-name>
</system>
</top>
JSON:
"top" : {
"system" : {
"host-name": "my-host.example.org"
}
}
HTML:
<div class="data"
data-tag="host-name">my-host.example.org</div>
EMITTING HIERARCHY
To create a container, use the xo_open_container() and
xo_close_container() set of functions. The handle parameter contains a
handle such as returned by xo_create(3) or NULL to use the default han‐
dle. The name parameter gives the name of the container, encoded in
UTF-8. Since ASCII is a proper subset of UTF-8, traditional C strings
can be used directly.