|
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
|
|
|
|
<html>
|
|
|
|
<head>
|
|
|
|
<title>Documentation</title>
|
|
|
|
<meta name='creator' content='Mini-XML v2.4'>
|
|
|
|
<style type='text/css'><!--
|
|
|
|
h1, h2, h3, p { font-family: sans-serif; text-align: justify; }
|
|
|
|
tt, pre a:link, pre a:visited, tt a:link, tt a:visited { font-weight: bold; color: #7f0000; }
|
|
|
|
pre { font-weight: bold; color: #7f0000; margin-left: 2em; }
|
|
|
|
span.info { background: #000000; border: solid thin #000000; color: #ffffff; font-size: 80%; font-style: italic; font-weight: bold; white-space: nowrap; }
|
|
|
|
h3 span.info { float: right; font-size: 100%; }
|
|
|
|
h1.title, h2.title, h3.title { border-bottom: solid 2px #000000; }
|
|
|
|
--></style>
|
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
<h2 class='title'>Contents</h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#ENUMERATIONS'>Enumerations</a></li>
|
|
|
|
<li><a href='#FUNCTIONS'>Functions</a></li>
|
|
|
|
<li><a href='#STRUCTURES'>Structures</a></li>
|
|
|
|
<li><a href='#TYPES'>Types</a></li>
|
|
|
|
<li><a href='#UNIONS'>Unions</a></li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h2 class='title'><a name='ENUMERATIONS'>Enumerations</a></h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#mxml_type_e'><tt>mxml_type_e</tt></a> </li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_type_e'>mxml_type_e</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>The XML node type.</p>
|
|
|
|
<h4>Values</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>MXML_CUSTOM</tt> <span class='info'> Mini-XML 2.1 </span></td><td>Custom data </td></tr>
|
|
|
|
<tr><td><tt>MXML_ELEMENT</tt> </td><td>XML element with attributes</td></tr>
|
|
|
|
<tr><td><tt>MXML_IGNORE</tt> <span class='info'> Mini-XML 2.3 </span></td><td>Ignore/throw away node </td></tr>
|
|
|
|
<tr><td><tt>MXML_INTEGER</tt> </td><td>Integer value</td></tr>
|
|
|
|
<tr><td><tt>MXML_OPAQUE</tt> </td><td>Opaque string</td></tr>
|
|
|
|
<tr><td><tt>MXML_REAL</tt> </td><td>Real value</td></tr>
|
|
|
|
<tr><td><tt>MXML_TEXT</tt> </td><td>Text fragment</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h2 class='title'><a name='FUNCTIONS'>Functions</a></h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#mxmlAdd'><tt>mxmlAdd()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlDelete'><tt>mxmlDelete()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlElementGetAttr'><tt>mxmlElementGetAttr()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlElementSetAttr'><tt>mxmlElementSetAttr()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlEntityAddCallback'><tt>mxmlEntityAddCallback()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlEntityGetName'><tt>mxmlEntityGetName()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlEntityGetValue'><tt>mxmlEntityGetValue()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlEntityRemoveCallback'><tt>mxmlEntityRemoveCallback()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlFindElement'><tt>mxmlFindElement()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlIndexDelete'><tt>mxmlIndexDelete()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlIndexEnum'><tt>mxmlIndexEnum()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlIndexFind'><tt>mxmlIndexFind()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlIndexNew'><tt>mxmlIndexNew()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlIndexReset'><tt>mxmlIndexReset()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlLoadFd'><tt>mxmlLoadFd()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlLoadFile'><tt>mxmlLoadFile()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlLoadString'><tt>mxmlLoadString()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewCDATA'><tt>mxmlNewCDATA()</tt></a> <span class='info'> Mini-XML 2.3 </span></li>
|
|
|
|
<li><a href='#mxmlNewCustom'><tt>mxmlNewCustom()</tt></a> <span class='info'> Mini-XML 2.1 </span></li>
|
|
|
|
<li><a href='#mxmlNewElement'><tt>mxmlNewElement()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewInteger'><tt>mxmlNewInteger()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewOpaque'><tt>mxmlNewOpaque()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewReal'><tt>mxmlNewReal()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewText'><tt>mxmlNewText()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlNewTextf'><tt>mxmlNewTextf()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlRelease'><tt>mxmlRelease()</tt></a> <span class='info'> Mini-XML 2.4 </span></li>
|
|
|
|
<li><a href='#mxmlRemove'><tt>mxmlRemove()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlRetain'><tt>mxmlRetain()</tt></a> <span class='info'> Mini-XML 2.4 </span></li>
|
|
|
|
<li><a href='#mxmlSaveAllocString'><tt>mxmlSaveAllocString()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSaveFd'><tt>mxmlSaveFd()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSaveFile'><tt>mxmlSaveFile()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSaveString'><tt>mxmlSaveString()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetCDATA'><tt>mxmlSetCDATA()</tt></a> <span class='info'> Mini-XML 2.3 </span></li>
|
|
|
|
<li><a href='#mxmlSetCustom'><tt>mxmlSetCustom()</tt></a> <span class='info'> Mini-XML 2.1 </span></li>
|
|
|
|
<li><a href='#mxmlSetCustomHandlers'><tt>mxmlSetCustomHandlers()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetElement'><tt>mxmlSetElement()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetErrorCallback'><tt>mxmlSetErrorCallback()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetInteger'><tt>mxmlSetInteger()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetOpaque'><tt>mxmlSetOpaque()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetReal'><tt>mxmlSetReal()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetText'><tt>mxmlSetText()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetTextf'><tt>mxmlSetTextf()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlSetWrapMargin'><tt>mxmlSetWrapMargin()</tt></a> <span class='info'> Mini-XML 2.4 </span></li>
|
|
|
|
<li><a href='#mxmlWalkNext'><tt>mxmlWalkNext()</tt></a> </li>
|
|
|
|
<li><a href='#mxmlWalkPrev'><tt>mxmlWalkPrev()</tt></a> </li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlAdd'>mxmlAdd()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Add a node to a tree.
|
|
|
|
|
|
|
|
Adds the specified node to the parent. If the child argument is not
|
|
|
|
NULL, puts the new node before or after the specified child depending
|
|
|
|
on the value of the where argument. If the child argument is NULL,
|
|
|
|
puts the new node at the beginning of the child list (MXML_ADD_BEFORE)
|
|
|
|
or at the end of the child list (MXML_ADD_AFTER). The constant
|
|
|
|
MXML_ADD_TO_PARENT can be used to specify a NULL child pointer.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlAdd(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
int where,
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * child,
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node</td></tr>
|
|
|
|
<tr><td><tt>where</tt></td><td>Where to add, MXML_ADD_BEFORE or MXML_ADD_AFTER</td></tr>
|
|
|
|
<tr><td><tt>child</tt></td><td>Child node for where or MXML_ADD_TO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to add</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlDelete'>mxmlDelete()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Delete a node and all of its children.
|
|
|
|
|
|
|
|
If the specified node has a parent, this function first removes the
|
|
|
|
node from its parent using the mxmlRemove() function.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlDelete(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to delete</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlElementGetAttr'>mxmlElementGetAttr()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Get an attribute.
|
|
|
|
|
|
|
|
This function returns NULL if the node is not an element or the
|
|
|
|
named attribute does not exist.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
const char *
|
|
|
|
mxmlElementGetAttr(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * name);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Element node</td></tr>
|
|
|
|
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Attribute value or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlElementSetAttr'>mxmlElementSetAttr()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set an attribute.
|
|
|
|
|
|
|
|
If the named attribute already exists, the value of the attribute
|
|
|
|
is replaced by the new string value. The string value is copied
|
|
|
|
into the element node. This function does nothing if the node is
|
|
|
|
not an element.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlElementSetAttr(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * name,
|
|
|
|
const char * value);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Element node</td></tr>
|
|
|
|
<tr><td><tt>name</tt></td><td>Name of attribute</td></tr>
|
|
|
|
<tr><td><tt>value</tt></td><td>Attribute value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlEntityAddCallback'>mxmlEntityAddCallback()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Add a callback to convert entities to Unicode.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlEntityAddCallback(void);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<p>None.</p>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlEntityGetName'>mxmlEntityGetName()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Get the name that corresponds to the character value.
|
|
|
|
|
|
|
|
If val does not need to be represented by a named entity, NULL is returned.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
const char *
|
|
|
|
mxmlEntityGetName(
|
|
|
|
int val);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>val</tt></td><td>Character value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Entity name or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlEntityGetValue'>mxmlEntityGetValue()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Get the character corresponding to a named entity.
|
|
|
|
|
|
|
|
The entity name can also be a numeric constant. -1 is returned if the
|
|
|
|
name is not known.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlEntityGetValue(
|
|
|
|
const char * name);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>name</tt></td><td>Entity name</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Character value or -1 on error</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlEntityRemoveCallback'>mxmlEntityRemoveCallback()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Remove a callback.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlEntityRemoveCallback(void);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<p>None.</p>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlFindElement'>mxmlFindElement()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Find the named element.
|
|
|
|
|
|
|
|
The search is constrained by the name, attribute name, and value; any
|
|
|
|
NULL names or values are treated as wildcards, so different kinds of
|
|
|
|
searches can be implemented by looking for all elements of a given name
|
|
|
|
or all elements with a specific attribute. The descend argument determines
|
|
|
|
whether the search descends into child nodes; normally you will use
|
|
|
|
MXML_DESCEND_FIRST for the initial search and MXML_NO_DESCEND to find
|
|
|
|
additional direct descendents of the node. The top node argument
|
|
|
|
constrains the search to a particular node's children.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlFindElement(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
const char * name,
|
|
|
|
const char * attr,
|
|
|
|
const char * value,
|
|
|
|
int descend);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Current node</td></tr>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>name</tt></td><td>Element name or NULL for any</td></tr>
|
|
|
|
<tr><td><tt>attr</tt></td><td>Attribute name, or NULL for none</td></tr>
|
|
|
|
<tr><td><tt>value</tt></td><td>Attribute value, or NULL for any</td></tr>
|
|
|
|
<tr><td><tt>descend</tt></td><td>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Element node or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlIndexDelete'>mxmlIndexDelete()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Delete an index.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlIndexDelete(
|
|
|
|
<a href='#mxml_index_t'>mxml_index_t</a> * ind);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>ind</tt></td><td>Index to delete</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlIndexEnum'>mxmlIndexEnum()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Return the next node in the index.
|
|
|
|
|
|
|
|
Nodes are returned in the sorted order of the index.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlIndexEnum(
|
|
|
|
<a href='#mxml_index_t'>mxml_index_t</a> * ind);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>ind</tt></td><td>Index to enumerate</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Next node or NULL if there is none</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlIndexFind'>mxmlIndexFind()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Find the next matching node.
|
|
|
|
|
|
|
|
You should call mxmlIndexReset() prior to using this function for
|
|
|
|
the first time with a particular set of "element" and "value"
|
|
|
|
strings. Passing NULL for both "element" and "value" is equivalent
|
|
|
|
to calling mxmlIndexEnum().</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlIndexFind(
|
|
|
|
<a href='#mxml_index_t'>mxml_index_t</a> * ind,
|
|
|
|
const char * element,
|
|
|
|
const char * value);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>ind</tt></td><td>Index to search</td></tr>
|
|
|
|
<tr><td><tt>element</tt></td><td>Element name to find, if any</td></tr>
|
|
|
|
<tr><td><tt>value</tt></td><td>Attribute value, if any</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Node or NULL if none found</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlIndexNew'>mxmlIndexNew()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new index.
|
|
|
|
|
|
|
|
The index will contain all nodes that contain the named element and/or
|
|
|
|
attribute. If both "element" and "attr" are NULL, then the index will
|
|
|
|
contain a sorted list of the elements in the node tree. Nodes are
|
|
|
|
sorted by element name and optionally by attribute value if the "attr"
|
|
|
|
argument is not NULL.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_index_t'>mxml_index_t</a> *
|
|
|
|
mxmlIndexNew(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * element,
|
|
|
|
const char * attr);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>XML node tree</td></tr>
|
|
|
|
<tr><td><tt>element</tt></td><td>Element to index or NULL for all</td></tr>
|
|
|
|
<tr><td><tt>attr</tt></td><td>Attribute to index or NULL for none</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New index</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlIndexReset'>mxmlIndexReset()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Reset the enumeration/find pointer in the index and
|
|
|
|
return the first node in the index.
|
|
|
|
|
|
|
|
This function should be called prior to using mxmlIndexEnum() or
|
|
|
|
mxmlIndexFind() for the first time.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlIndexReset(
|
|
|
|
<a href='#mxml_index_t'>mxml_index_t</a> * ind);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>ind</tt></td><td>Index to reset</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>First node or NULL if there is none</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlLoadFd'>mxmlLoadFd()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Load a file descriptor into an XML node tree.
|
|
|
|
|
|
|
|
The nodes in the specified file are added to the specified top node.
|
|
|
|
If no top node is provided, the XML file MUST be well-formed with a
|
|
|
|
single parent node like <?xml> for the entire file. The callback
|
|
|
|
function returns the value type that should be used for child nodes.
|
|
|
|
If MXML_NO_CALLBACK is specified then all child nodes will be either
|
|
|
|
MXML_ELEMENT or MXML_TEXT nodes.
|
|
|
|
|
|
|
|
The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
|
|
|
|
MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
|
|
|
|
child nodes of the specified type.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlLoadFd(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
int fd);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>fd</tt></td><td>File descriptor to read from</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>First node or NULL if the file could not be read.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlLoadFile'>mxmlLoadFile()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Load a file into an XML node tree.
|
|
|
|
|
|
|
|
The nodes in the specified file are added to the specified top node.
|
|
|
|
If no top node is provided, the XML file MUST be well-formed with a
|
|
|
|
single parent node like <?xml> for the entire file. The callback
|
|
|
|
function returns the value type that should be used for child nodes.
|
|
|
|
If MXML_NO_CALLBACK is specified then all child nodes will be either
|
|
|
|
MXML_ELEMENT or MXML_TEXT nodes.
|
|
|
|
|
|
|
|
The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
|
|
|
|
MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
|
|
|
|
child nodes of the specified type.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlLoadFile(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
FILE * fp);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>fp</tt></td><td>File to read from</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>First node or NULL if the file could not be read.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlLoadString'>mxmlLoadString()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Load a string into an XML node tree.
|
|
|
|
|
|
|
|
The nodes in the specified string are added to the specified top node.
|
|
|
|
If no top node is provided, the XML string MUST be well-formed with a
|
|
|
|
single parent node like <?xml> for the entire string. The callback
|
|
|
|
function returns the value type that should be used for child nodes.
|
|
|
|
If MXML_NO_CALLBACK is specified then all child nodes will be either
|
|
|
|
MXML_ELEMENT or MXML_TEXT nodes.
|
|
|
|
|
|
|
|
The constants MXML_INTEGER_CALLBACK, MXML_OPAQUE_CALLBACK,
|
|
|
|
MXML_REAL_CALLBACK, and MXML_TEXT_CALLBACK are defined for loading
|
|
|
|
child nodes of the specified type.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlLoadString(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
const char * s);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>s</tt></td><td>String to load</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>First node or NULL if the string has errors.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.3 </span><a name='mxmlNewCDATA'>mxmlNewCDATA()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new CDATA node.
|
|
|
|
|
|
|
|
The new CDATA node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
CDATA node has no parent. The data string must be nul-terminated and
|
|
|
|
is copied into the new node. CDATA nodes use the MXML_ELEMENT type.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewCDATA(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
const char * data);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>data</tt></td><td>Data string</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.1 </span><a name='mxmlNewCustom'>mxmlNewCustom()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new custom data node.
|
|
|
|
|
|
|
|
The new custom node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
element node has no parent. NULL can be passed when the data in the
|
|
|
|
node is not dynamically allocated or is separately managed.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewCustom(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
void * data);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>data</tt></td><td>Pointer to data</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewElement'>mxmlNewElement()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new element node.
|
|
|
|
|
|
|
|
The new element node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
element node has no parent.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewElement(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
const char * name);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>name</tt></td><td>Name of element</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewInteger'>mxmlNewInteger()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new integer node.
|
|
|
|
|
|
|
|
The new integer node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
integer node has no parent.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewInteger(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
int integer);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>integer</tt></td><td>Integer value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewOpaque'>mxmlNewOpaque()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new opaque string.
|
|
|
|
|
|
|
|
The new opaque node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
opaque node has no parent. The opaque string must be nul-terminated and
|
|
|
|
is copied into the new node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewOpaque(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
const char * opaque);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewReal'>mxmlNewReal()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new real number node.
|
|
|
|
|
|
|
|
The new real number node is added to the end of the specified parent's
|
|
|
|
child list. The constant MXML_NO_PARENT can be used to specify that
|
|
|
|
the new real number node has no parent.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewReal(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
double real);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>real</tt></td><td>Real number value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewText'>mxmlNewText()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new text fragment node.
|
|
|
|
|
|
|
|
The new text node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
text node has no parent. The whitespace parameter is used to specify
|
|
|
|
whether leading whitespace is present before the node. The text
|
|
|
|
string must be nul-terminated and is copied into the new node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewText(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
int whitespace,
|
|
|
|
const char * string);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>whitespace</tt></td><td>1 = leading whitespace, 0 = no whitespace</td></tr>
|
|
|
|
<tr><td><tt>string</tt></td><td>String</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlNewTextf'>mxmlNewTextf()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Create a new formatted text fragment node.
|
|
|
|
|
|
|
|
The new text node is added to the end of the specified parent's child
|
|
|
|
list. The constant MXML_NO_PARENT can be used to specify that the new
|
|
|
|
text node has no parent. The whitespace parameter is used to specify
|
|
|
|
whether leading whitespace is present before the node. The format
|
|
|
|
string must be nul-terminated and is formatted into the new node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlNewTextf(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * parent,
|
|
|
|
int whitespace,
|
|
|
|
const char * format,
|
|
|
|
...);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>parent</tt></td><td>Parent node or MXML_NO_PARENT</td></tr>
|
|
|
|
<tr><td><tt>whitespace</tt></td><td>1 = leading whitespace, 0 = no whitespace</td></tr>
|
|
|
|
<tr><td><tt>format</tt></td><td>Printf-style frmat string</td></tr>
|
|
|
|
<tr><td><tt>...</tt></td><td>Additional args as needed</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New node</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.4 </span><a name='mxmlRelease'>mxmlRelease()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Release a node.
|
|
|
|
|
|
|
|
When the reference count reaches zero, the node (and any children)
|
|
|
|
is deleted via mxmlDelete().
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlRelease(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New reference count</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlRemove'>mxmlRemove()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Remove a node from its parent.
|
|
|
|
|
|
|
|
Does not free memory used by the node - use mxmlDelete() for that.
|
|
|
|
This function does nothing if the node has no parent.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlRemove(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to remove</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.4 </span><a name='mxmlRetain'>mxmlRetain()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Retain a node.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlRetain(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>New reference count</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSaveAllocString'>mxmlSaveAllocString()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Save an XML node tree to an allocated string.
|
|
|
|
|
|
|
|
This function returns a pointer to a string containing the textual
|
|
|
|
representation of the XML node tree. The string should be freed
|
|
|
|
using the free() function when you are done with it. NULL is returned
|
|
|
|
if the node would produce an empty string or if the string cannot be
|
|
|
|
allocated.
|
|
|
|
|
|
|
|
The callback argument specifies a function that returns a whitespace
|
|
|
|
string or NULL before and after each element. If MXML_NO_CALLBACK
|
|
|
|
is specified, whitespace will only be added before MXML_TEXT nodes
|
|
|
|
with leading whitespace and before attribute names inside opening
|
|
|
|
element tags.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
char *
|
|
|
|
mxmlSaveAllocString(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to write</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Allocated string or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSaveFd'>mxmlSaveFd()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Save an XML tree to a file descriptor.
|
|
|
|
|
|
|
|
The callback argument specifies a function that returns a whitespace
|
|
|
|
string or NULL before and after each element. If MXML_NO_CALLBACK
|
|
|
|
is specified, whitespace will only be added before MXML_TEXT nodes
|
|
|
|
with leading whitespace and before attribute names inside opening
|
|
|
|
element tags.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSaveFd(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
int fd);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to write</td></tr>
|
|
|
|
<tr><td><tt>fd</tt></td><td>File descriptor to write to</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on error.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSaveFile'>mxmlSaveFile()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Save an XML tree to a file.
|
|
|
|
|
|
|
|
The callback argument specifies a function that returns a whitespace
|
|
|
|
string or NULL before and after each element. If MXML_NO_CALLBACK
|
|
|
|
is specified, whitespace will only be added before MXML_TEXT nodes
|
|
|
|
with leading whitespace and before attribute names inside opening
|
|
|
|
element tags.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSaveFile(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
FILE * fp);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to write</td></tr>
|
|
|
|
<tr><td><tt>fp</tt></td><td>File to write to</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on error.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSaveString'>mxmlSaveString()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Save an XML node tree to a string.
|
|
|
|
|
|
|
|
This function returns the total number of bytes that would be
|
|
|
|
required for the string but only copies (bufsize - 1) characters
|
|
|
|
into the specified buffer.
|
|
|
|
|
|
|
|
The callback argument specifies a function that returns a whitespace
|
|
|
|
string or NULL before and after each element. If MXML_NO_CALLBACK
|
|
|
|
is specified, whitespace will only be added before MXML_TEXT nodes
|
|
|
|
with leading whitespace and before attribute names inside opening
|
|
|
|
element tags.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSaveString(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
char * buffer,
|
|
|
|
int bufsize);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to write</td></tr>
|
|
|
|
<tr><td><tt>buffer</tt></td><td>String buffer</td></tr>
|
|
|
|
<tr><td><tt>bufsize</tt></td><td>Size of string buffer</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Size of string</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.3 </span><a name='mxmlSetCDATA'>mxmlSetCDATA()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the element name of a CDATA node.
|
|
|
|
|
|
|
|
The node is not changed if it is not a CDATA element node.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetCDATA(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * data);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>data</tt></td><td>New data string</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.1 </span><a name='mxmlSetCustom'>mxmlSetCustom()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the data and destructor of a custom data node.
|
|
|
|
|
|
|
|
The node is not changed if it is not a custom node.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetCustom(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
void * data);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>data</tt></td><td>New data pointer</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetCustomHandlers'>mxmlSetCustomHandlers()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the handling functions for custom data.
|
|
|
|
|
|
|
|
The load function accepts a node pointer and a data string and must
|
|
|
|
return 0 on success and non-zero on error.
|
|
|
|
|
|
|
|
The save function accepts a node pointer and must return a malloc'd
|
|
|
|
string on success and NULL on error.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlSetCustomHandlers(
|
|
|
|
<a href='#mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a> load,
|
|
|
|
<a href='#mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a> save);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>load</tt></td><td>Load function</td></tr>
|
|
|
|
<tr><td><tt>save</tt></td><td>Save function</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetElement'>mxmlSetElement()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the name of an element node.
|
|
|
|
|
|
|
|
The node is not changed if it is not an element node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetElement(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * name);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>name</tt></td><td>New name string</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetErrorCallback'>mxmlSetErrorCallback()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the error message callback.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlSetErrorCallback(void);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<p>None.</p>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetInteger'>mxmlSetInteger()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the value of an integer node.
|
|
|
|
|
|
|
|
The node is not changed if it is not an integer node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetInteger(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
int integer);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>integer</tt></td><td>Integer value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetOpaque'>mxmlSetOpaque()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the value of an opaque node.
|
|
|
|
|
|
|
|
The node is not changed if it is not an opaque node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetOpaque(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
const char * opaque);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>opaque</tt></td><td>Opaque string</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetReal'>mxmlSetReal()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the value of a real number node.
|
|
|
|
|
|
|
|
The node is not changed if it is not a real number node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetReal(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
double real);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>real</tt></td><td>Real number value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetText'>mxmlSetText()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the value of a text node.
|
|
|
|
|
|
|
|
The node is not changed if it is not a text node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetText(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
int whitespace,
|
|
|
|
const char * string);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>whitespace</tt></td><td>1 = leading whitespace, 0 = no whitespace</td></tr>
|
|
|
|
<tr><td><tt>string</tt></td><td>String</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlSetTextf'>mxmlSetTextf()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the value of a text node to a formatted string.
|
|
|
|
|
|
|
|
The node is not changed if it is not a text node.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
int
|
|
|
|
mxmlSetTextf(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
int whitespace,
|
|
|
|
const char * format,
|
|
|
|
...);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Node to set</td></tr>
|
|
|
|
<tr><td><tt>whitespace</tt></td><td>1 = leading whitespace, 0 = no whitespace</td></tr>
|
|
|
|
<tr><td><tt>format</tt></td><td>Printf-style format string</td></tr>
|
|
|
|
<tr><td><tt>...</tt></td><td>Additional arguments as needed</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>0 on success, -1 on failure</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.4 </span><a name='mxmlSetWrapMargin'>mxmlSetWrapMargin()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Set the the wrap margin when saving XML data.
|
|
|
|
|
|
|
|
Wrapping is disabled when "column" is <= 0.
|
|
|
|
|
|
|
|
</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
void
|
|
|
|
mxmlSetWrapMargin(
|
|
|
|
int column);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>column</tt></td><td>Column for wrapping</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Nothing.</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlWalkNext'>mxmlWalkNext()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Walk to the next logical node in the tree.
|
|
|
|
|
|
|
|
The descend argument controls whether the first child is considered
|
|
|
|
to be the next node. The top node argument constrains the walk to
|
|
|
|
the node's children.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlWalkNext(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
int descend);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Current node</td></tr>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>descend</tt></td><td>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Next node or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxmlWalkPrev'>mxmlWalkPrev()</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Walk to the previous logical node in the tree.
|
|
|
|
|
|
|
|
The descend argument controls whether the previous node's last child
|
|
|
|
is considered to be the previous node. The top node argument constrains
|
|
|
|
the walk to the node's children.</p>
|
|
|
|
<h4>Syntax</h4>
|
|
|
|
<pre>
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> *
|
|
|
|
mxmlWalkPrev(
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * node,
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> * top,
|
|
|
|
int descend);
|
|
|
|
</pre>
|
|
|
|
<h4>Arguments</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%' cellpadding='5' cellspacing='0'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>node</tt></td><td>Current node</td></tr>
|
|
|
|
<tr><td><tt>top</tt></td><td>Top node</td></tr>
|
|
|
|
<tr><td><tt>descend</tt></td><td>Descend into tree - MXML_DESCEND, MXML_NO_DESCEND, or MXML_DESCEND_FIRST</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<h4>Returns</h4>
|
|
|
|
<p>Previous node or NULL</p>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h2 class='title'><a name='STRUCTURES'>Structures</a></h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#mxml_attr_s'><tt>mxml_attr_s</tt></a> </li>
|
|
|
|
<li><a href='#mxml_custom_s'><tt>mxml_custom_s</tt></a> <span class='info'> Mini-XML 2.1 </span></li>
|
|
|
|
<li><a href='#mxml_element_s'><tt>mxml_element_s</tt></a> </li>
|
|
|
|
<li><a href='#mxml_index_s'><tt>mxml_index_s</tt></a> </li>
|
|
|
|
<li><a href='#mxml_node_s'><tt>mxml_node_s</tt></a> </li>
|
|
|
|
<li><a href='#mxml_text_s'><tt>mxml_text_s</tt></a> </li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_attr_s'>mxml_attr_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Data types...</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_attr_s
|
|
|
|
{
|
|
|
|
char * name;
|
|
|
|
char * value;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>name</tt> </td><td>Attribute name</td></tr>
|
|
|
|
<tr><td><tt>value</tt> </td><td>Attribute value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.1 </span><a name='mxml_custom_s'>mxml_custom_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML custom value. </p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_custom_s
|
|
|
|
{
|
|
|
|
void * data;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>data</tt> </td><td>Pointer to (allocated) custom data</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_element_s'>mxml_element_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML element value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_element_s
|
|
|
|
{
|
|
|
|
<a href='#mxml_attr_t'>mxml_attr_t</a> * attrs;
|
|
|
|
char * name;
|
|
|
|
int num_attrs;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>attrs</tt> </td><td>Attributes</td></tr>
|
|
|
|
<tr><td><tt>name</tt> </td><td>Name of element</td></tr>
|
|
|
|
<tr><td><tt>num_attrs</tt> </td><td>Number of attributes</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_index_s'>mxml_index_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node index.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_index_s
|
|
|
|
{
|
|
|
|
int alloc_nodes;
|
|
|
|
char * attr;
|
|
|
|
int cur_node;
|
|
|
|
<a href='#mxml_node_t'>mxml_node_t</a> ** nodes;
|
|
|
|
int num_nodes;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>alloc_nodes</tt> </td><td>Allocated nodes in index</td></tr>
|
|
|
|
<tr><td><tt>attr</tt> </td><td>Attribute used for indexing or NULL</td></tr>
|
|
|
|
<tr><td><tt>cur_node</tt> </td><td>Current node</td></tr>
|
|
|
|
<tr><td><tt>nodes</tt> </td><td>Node array</td></tr>
|
|
|
|
<tr><td><tt>num_nodes</tt> </td><td>Number of nodes in index</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_node_s'>mxml_node_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_node_s
|
|
|
|
{
|
|
|
|
struct <a href='#mxml_node_s'>mxml_node_s</a> * child;
|
|
|
|
struct <a href='#mxml_node_s'>mxml_node_s</a> * last_child;
|
|
|
|
struct <a href='#mxml_node_s'>mxml_node_s</a> * next;
|
|
|
|
struct <a href='#mxml_node_s'>mxml_node_s</a> * parent;
|
|
|
|
struct <a href='#mxml_node_s'>mxml_node_s</a> * prev;
|
|
|
|
int ref_count;
|
|
|
|
mxml_type_t type;
|
|
|
|
void * user_data;
|
|
|
|
<a href='#mxml_value_t'>mxml_value_t</a> value;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>child</tt> </td><td>First child node</td></tr>
|
|
|
|
<tr><td><tt>last_child</tt> </td><td>Last child node</td></tr>
|
|
|
|
<tr><td><tt>next</tt> </td><td>Next node under same parent</td></tr>
|
|
|
|
<tr><td><tt>parent</tt> </td><td>Parent node</td></tr>
|
|
|
|
<tr><td><tt>prev</tt> </td><td>Previous node under same parent</td></tr>
|
|
|
|
<tr><td><tt>ref_count</tt> </td><td>Use count</td></tr>
|
|
|
|
<tr><td><tt>type</tt> </td><td>Node type</td></tr>
|
|
|
|
<tr><td><tt>user_data</tt> </td><td>User data</td></tr>
|
|
|
|
<tr><td><tt>value</tt> </td><td>Node value</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_text_s'>mxml_text_s</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML text value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
struct mxml_text_s
|
|
|
|
{
|
|
|
|
char * string;
|
|
|
|
int whitespace;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>string</tt> </td><td>Fragment string</td></tr>
|
|
|
|
<tr><td><tt>whitespace</tt> </td><td>Leading whitespace?</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h2 class='title'><a name='TYPES'>Types</a></h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#mxml_attr_t'><tt>mxml_attr_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_custom_load_cb_t'><tt>mxml_custom_load_cb_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_custom_save_cb_t'><tt>mxml_custom_save_cb_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_custom_t'><tt>mxml_custom_t</tt></a> <span class='info'> Mini-XML 2.1 </span></li>
|
|
|
|
<li><a href='#mxml_element_t'><tt>mxml_element_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_index_t'><tt>mxml_index_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_node_t'><tt>mxml_node_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_text_t'><tt>mxml_text_t</tt></a> </li>
|
|
|
|
<li><a href='#mxml_value_t'><tt>mxml_value_t</tt></a> </li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_attr_t'>mxml_attr_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Data types...</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_attr_s'>mxml_attr_s</a> mxml_attr_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_custom_load_cb_t'>mxml_custom_load_cb_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Custom data load callback function</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef int (*mxml_custom_load_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *, const char *);
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_custom_save_cb_t'>mxml_custom_save_cb_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>Custom data save callback function</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef char * (*mxml_custom_save_cb_t)(<a href='#mxml_node_t'>mxml_node_t</a> *);
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><span class='info'> Mini-XML 2.1 </span><a name='mxml_custom_t'>mxml_custom_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML custom value. </p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_custom_s'>mxml_custom_s</a> mxml_custom_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_element_t'>mxml_element_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML element value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_element_s'>mxml_element_s</a> mxml_element_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_index_t'>mxml_index_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node index.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_index_s'>mxml_index_s</a> mxml_index_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_node_t'>mxml_node_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_node_s'>mxml_node_s</a> mxml_node_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_text_t'>mxml_text_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML text value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef struct <a href='#mxml_text_s'>mxml_text_s</a> mxml_text_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_value_t'>mxml_value_t</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
typedef union <a href='#mxml_value_u'>mxml_value_u</a> mxml_value_t;
|
|
|
|
</pre>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h2 class='title'><a name='UNIONS'>Unions</a></h2>
|
|
|
|
<ul>
|
|
|
|
<li><a href='#mxml_value_u'><tt>mxml_value_u</tt></a> </li>
|
|
|
|
</ul>
|
|
|
|
<!-- NEW PAGE -->
|
|
|
|
<h3 class='title'><a name='mxml_value_u'>mxml_value_u</a></h3>
|
|
|
|
<h4>Description</h4>
|
|
|
|
<p>An XML node value.</p>
|
|
|
|
<h4>Definition</h4>
|
|
|
|
<pre>
|
|
|
|
union mxml_value_u
|
|
|
|
{
|
|
|
|
<a href='#mxml_custom_t'>mxml_custom_t</a> custom;
|
|
|
|
<a href='#mxml_element_t'>mxml_element_t</a> element;
|
|
|
|
int integer;
|
|
|
|
char * opaque;
|
|
|
|
double real;
|
|
|
|
<a href='#mxml_text_t'>mxml_text_t</a> text;
|
|
|
|
};
|
|
|
|
</pre>
|
|
|
|
<h4>Members</h4>
|
|
|
|
<div class='table'><table align='center' border='1' width='80%'>
|
|
|
|
<thead><tr><th>Name</th><th>Description</th></tr></thead>
|
|
|
|
<tbody>
|
|
|
|
<tr><td><tt>custom</tt> <span class='info'> Mini-XML 2.1 </span></td><td>Custom data </td></tr>
|
|
|
|
<tr><td><tt>element</tt> </td><td>Element</td></tr>
|
|
|
|
<tr><td><tt>integer</tt> </td><td>Integer number</td></tr>
|
|
|
|
<tr><td><tt>opaque</tt> </td><td>Opaque string</td></tr>
|
|
|
|
<tr><td><tt>real</tt> </td><td>Real number</td></tr>
|
|
|
|
<tr><td><tt>text</tt> </td><td>Text fragment</td></tr>
|
|
|
|
</tbody></table></div>
|
|
|
|
</body>
|
|
|
|
</html>
|