<libroxml
version="3.0.2"
/>
|
API consistency module. More...
#include "roxml_internal.h"
Go to the source code of this file.
Functions | |
ROXML_STUB int | roxml_commit_changes (node_t *n, char *dest, char **buffer, int human) |
sync function | |
ROXML_STUB int | roxml_commit_file (node_t *n, char *dest, int human) |
sync to named file function | |
ROXML_STUB int | roxml_commit_buffer (node_t *n, char **buffer, int human) |
sync to a memory buffer function | |
ROXML_STUB int | roxml_commit_fd (node_t *n, int fd, int human) |
sync to file descriptor function | |
ROXML_STUB void | roxml_del_node (node_t *n) |
node deletion function | |
ROXML_STUB node_t * | roxml_add_node (node_t *parent, int position, int type, char *name, char *value) |
add a node to the tree | |
ROXML_STUB node_t * | roxml_set_ns (node_t *n, node_t *ns) |
namespace setter function | |
ROXML_STUB char * | roxml_get_content (node_t *n, char *buffer, int bufsize, int *size) |
content getter function | |
ROXML_STUB char * | roxml_get_name (node_t *n, char *buffer, int size) |
name getter function | |
ROXML_STUB int | roxml_get_nodes_nb (node_t *n, int type) |
number of nodes getter function | |
ROXML_STUB node_t * | roxml_get_nodes (node_t *n, int type, char *name, int nth) |
nodes getter function | |
ROXML_STUB node_t * | roxml_get_ns (node_t *n) |
namespace getter function | |
ROXML_STUB int | roxml_get_pi_nb (node_t *n) |
process-instruction number getter function | |
ROXML_STUB node_t * | roxml_get_pi (node_t *n, int nth) |
process-instruction getter function | |
ROXML_STUB int | roxml_get_cmt_nb (node_t *n) |
comments number getter function | |
ROXML_STUB node_t * | roxml_get_cmt (node_t *n, int nth) |
comment getter function | |
ROXML_STUB int | roxml_get_txt_nb (node_t *n) |
text node number getter function | |
ROXML_STUB node_t * | roxml_get_txt (node_t *n, int nth) |
text node getter function | |
ROXML_STUB int | roxml_get_attr_nb (node_t *n) |
number of attribute getter function | |
ROXML_STUB node_t * | roxml_get_attr (node_t *n, char *name, int nth) |
attribute getter function | |
ROXML_STUB int | roxml_get_chld_nb (node_t *n) |
chlds number getter function | |
ROXML_STUB node_t * | roxml_get_chld (node_t *n, char *name, int nth) |
chld getter function | |
ROXML_STUB int | roxml_get_type (node_t *n) |
node type function | |
ROXML_STUB int | roxml_get_node_position (node_t *n) |
node get position function | |
ROXML_STUB node_t ** | roxml_xpath (node_t *n, char *path, int *nb_ans) |
exec path function | |
ROXML_STUB node_t * | roxml_get_prev_sibling (node_t *n) |
prev sibling getter function | |
ROXML_STUB node_t * | roxml_get_next_sibling (node_t *n) |
next sibling getter function | |
ROXML_STUB node_t * | roxml_get_parent (node_t *n) |
parent getter function | |
ROXML_STUB node_t * | roxml_get_root (node_t *n) |
root getter function | |
ROXML_STUB node_t * | roxml_load_fd (int fd) |
load function for file descriptors | |
ROXML_STUB node_t * | roxml_load_doc (char *filename) |
load function for files | |
ROXML_STUB int | roxml_read_file (int pos, int size, char *buffer, node_t *node) |
read xml doc function | |
ROXML_STUB void | roxml_close_file (node_t *n) |
unload function | |
ROXML_STUB int | roxml_parse_file (roxml_load_ctx_t *context, roxml_parser_item_t *parser, FILE *file) |
generic load function | |
ROXML_STUB node_t * | roxml_load_buf (char *buffer) |
load function for buffers | |
ROXML_STUB int | roxml_read_buff (int pos, int size, char *buffer, node_t *node) |
read xml doc function | |
ROXML_STUB void | roxml_close_buff (node_t *n) |
unload function | |
ROXML_STUB int | roxml_parse_buff (roxml_load_ctx_t *context, roxml_parser_item_t *parser, char *buffer) |
generic load function | |
API consistency module.
(C) Copyright 2014 Tristan Lelong trist.nosp@m.an.l.nosp@m.elong.nosp@m.@lib.nosp@m.roxml.nosp@m..net
SPDX-Licence-Identifier: LGPL-2.1+ The author added a static linking exception, see License.txt.
Definition in file roxml_stub.c.
ROXML_STUB node_t * roxml_add_node | ( | node_t * | parent, |
int | position, | ||
int | type, | ||
char * | name, | ||
char * | value | ||
) |
add a node to the tree
this function add a new node to the tree. This will not update de buffer or file, only the RAM loaded tree. One should call roxml_commit_changes to save modifications. If the parent node is an ROXML_ELM_NODE, then, new node will be added as a child. Else the node will be added as a sibling of the parent node. In the later case, position parameter describes the position in the sibling list, instead of position in the children list.
parent | the parent node |
position | the position as a child of parent 1 is the first child, 0 for auto position at the end of children list... |
type | the type of node between ROXML_ATTR_NODE, ROXML_ELM_NODE, ROXML_TXT_NODE, ROXML_CDATA_NODE, ROXML_PI_NODE, ROXML_CMT_NODE, ROXML_NSDEF_NODE, ROXML_NS_NODE. |
name | the name of the node (mandatory for ROXML_ATTR_NODE and ROXML_ELM_NODE and ROXML_PI_NODE and ROXML_NSDEF_NODE and ROXML_NS_NODE only) |
value | the text content (mandatory for ROXML_TXT_NODE, ROXML_CDATA_NODE, ROXML_CMT_NODE, ROXML_ATTR_NODE and ROXML_NSDEF_NODE optional for ROXML_ELM_NODE, ROXML_PI_NODE). The text content for an attribute is the attribute value |
Escaping the as per XML specifications can be done by adding the ROXML_ESCAPED_MOD modifier to node type as showed below:
This will create a node that exports as:
* <node1>content <that> needs escaping</node1> *
paramaters name and value depending on node type:
some examples to obtain this xml result file
<root> <!-- sample XML file --> <item id="42"> <price> 24 </price> </item> </root>
Or also:
If you need a valid XML doc, just start by adding a corresponding process-instruction. Example, to obtain this xml file:
<?xml version="1.0" encoding="UTF-8"?> <!--sample file--> <doc> basic content <item/> <item/> <item/> </doc>
Definition at line 47 of file roxml_stub.c.
ROXML_STUB void roxml_close_buff | ( | node_t * | n | ) |
unload function
This function clear a document that was opened as part of a buffer
n | is any node of the tree to be cleaned |
Definition at line 247 of file roxml_stub.c.
ROXML_STUB void roxml_close_file | ( | node_t * | n | ) |
unload function
This function clear a document that was opened as part of a file
n | is any node of the tree to be cleaned |
Definition at line 221 of file roxml_stub.c.
ROXML_STUB int roxml_commit_buffer | ( | node_t * | n, |
char ** | buffer, | ||
int | human | ||
) |
sync to a memory buffer function
this function syncs changes from the RAM tree to the given buffer in human or one-line format The tree will be processed starting with the root node 'n' and following with all its children or if n is the root, all its siblings and children. The tree will be dumped to a buffer if 'buffer' is not null. the buffer is allocated by the library and a pointer to it will be stored into 'buffer'. The allocated buffer can be freed using free()
n | the root node of the tree to write |
buffer | the address of a buffer where the tree will be written. This buffer have to be freed after use |
human | 0 for one-line tree, or 1 for human format (using indentation, newlines...) |
One should do:
to generate the following xml bloc:
<root> <!-- sample XML file --> <item id="42"> <price> 24 </price> </item> </root>
or also
to generate the following xml bloc:
<root><!-- sample XML file --><item id="42"><price>24</price></item></root>
Definition at line 27 of file roxml_stub.c.
ROXML_STUB int roxml_commit_changes | ( | node_t * | n, |
char * | dest, | ||
char ** | buffer, | ||
int | human | ||
) |
sync function
This function is now deprecated and one should use roxml_commit_buffer or roxml_commit_file that achieves the exact same goal.
n | the root node of the tree to write |
dest | the path to a file to write tree to |
buffer | the address of a buffer where the tree will be written. This buffer have to be freed after use |
human | 0 for one-line tree, or 1 for human format (using tabs, newlines...) |
This is a legacy function that proposes the same functionnalities as both roxml_commit_file
and roxml_commit_buffer
. New code should use the latter functions when needed.
One should do:
to generate the following xml bloc:
<root> <!-- sample XML file --> <item id="42"> <price> 24 </price> </item> </root>
or also
to generate the following xml bloc:
<root><!-- sample XML file --><item id="42"><price>24</price></item></root>
the buffer variant works more or less the same way
to generate the following xml bloc:
<root><!-- sample XML file --><item id="42"><price>24</price></item></root>
Definition at line 15 of file roxml_stub.c.
ROXML_STUB int roxml_commit_fd | ( | node_t * | n, |
int | fd, | ||
int | human | ||
) |
sync to file descriptor function
this function synchronizes changes from the RAM tree to the given file in human or one-line format. The tree will be processed starting with the root node 'n' and following with all its children or if n is the root, all its siblings and children. The tree will be dumped to a file if fd is a valid file descriptor.
n | the root node of the tree to write |
fd | the file descriptor to write tree to |
human | 0 for one-line tree, or 1 for human format (using tabs, newlines...) |
The file described by fd is not truncated so this function allows one to append an XML subtree to an existing file.
One should do:
to generate the following xml bloc:
<root> <!-- sample XML file --> <item id="42"> <price> 24 </price> </item> </root>
or also
to generate the following xml bloc:
<root><!-- sample XML file --><item id="42"><price>24</price></item></root>
Definition at line 33 of file roxml_stub.c.
ROXML_STUB int roxml_commit_file | ( | node_t * | n, |
char * | dest, | ||
int | human | ||
) |
sync to named file function
this function sync changes from the RAM tree to the given file in human or one-line format The tree will be processed starting with the root node 'n' and following with all its children or if n is the root, all its siblings and children. The tree will be dumped to a file if 'dest' is not null and contains a valid path.
n | the root node of the tree to write |
dest | the path to a file to write tree to |
human | 0 for one-line tree, or 1 for human format (using tabs, newlines...) |
One should do:
to generate the following xml bloc:
<root> <!-- sample XML file --> <item id="42"> <price> 24 </price> </item> </root>
or also
to generate the following xml bloc:
<root><!-- sample XML file --><item id="42"><price>24</price></item></root>
Definition at line 21 of file roxml_stub.c.
ROXML_STUB void roxml_del_node | ( | node_t * | n | ) |
node deletion function
this function delete a node from the tree. The node is not really deleted from the file or buffer until the roxml_commit_changes is called, but it won't be visible anymore in the XML tree.
n | the node to delete |
Definition at line 41 of file roxml_stub.c.
attribute getter function
This function get the nth attribute of a node.
n | is one node of the tree |
name | is the name of the attribute to get |
nth | the id of attribute to read |
example: given the following xml file
<xml> <product id="42" class="item"/> </xml>
Definition at line 135 of file roxml_stub.c.
|
inline |
number of attribute getter function
This function returns the number of attributes for a given node
n | is one node of the tree |
Definition at line 129 of file roxml_stub.c.
chld getter function
This function returns a given chld of a node etheir by name, or the nth child.
n | is one node of the tree |
name | is the name of the child to get |
nth | is the id of the chld to get |
example: given the following xml file
<xml> <item1/> <item2/> <item3/> </xml>
Definition at line 147 of file roxml_stub.c.
|
inline |
chlds number getter function
This function return the number of chlidren for a given node
n | is one node of the tree |
Definition at line 141 of file roxml_stub.c.
comment getter function
This function returns the nth comment of a node
n | is one node of the tree |
nth | is the id of the cmt to get |
example: given the following xml file
<xml> <item1/> <!--comment1--> <!--comment2--> <item2/> <item3/> </xml>
Definition at line 111 of file roxml_stub.c.
|
inline |
comments number getter function
This function return the number of comments for a given node
n | is one node of the tree |
Definition at line 105 of file roxml_stub.c.
ROXML_STUB char * roxml_get_content | ( | node_t * | n, |
char * | buffer, | ||
int | bufsize, | ||
int * | size | ||
) |
content getter function
This function returns the content of a node.; if the returned pointer is NULL then the node either has no content or this function is irrelevant for this kind of node. depending on node type it will return:
returned string should be freed using roxml_release when not used anymore
n | is one node of the tree |
buffer | is the buffer where result will be written or NULL for internal allocation |
bufsize | the size if using custom buffer |
size | the actual size of copied result. returned size should be less that buffer size since roxml_get_content will add the \0. if buffer was not NULL and size == buf_size, then given buffer was too small and node content was truncated |
Definition at line 61 of file roxml_stub.c.
ROXML_STUB char * roxml_get_name | ( | node_t * | n, |
char * | buffer, | ||
int | size | ||
) |
name getter function
This function return the name of the node or fill the current buffer with it if not NULL. if name is NULL, the function will allocate a buffer that user should free using roxml_release when no longer needed. depending on node type it will return:
Be carreful as if your buffer is too short for the returned string, it will be truncated
n | is one node of the tree |
buffer | a buffer pointer or NULL if has to be auto allocated |
size | the size of buffer pointed by buffer if not NULL |
Definition at line 69 of file roxml_stub.c.
next sibling getter function
This function returns the next sibling of a given node
n | is one node of the tree |
Definition at line 183 of file roxml_stub.c.
ROXML_STUB int roxml_get_node_position | ( | node_t * | n | ) |
node get position function
This function tells the index of a node between all its siblings homonyns.
n | is the node to test |
Definition at line 159 of file roxml_stub.c.
nodes getter function
This function get the nth node matching type contained in a node, or the first node named name. All other roxml_get_* are wrapper to this function. When asking for several node type (let say ROXML_ALL_NODES), all ROXML_ATTR_NODE will be placed first, then, all other nodes will come mixed, depending on xml document order.
n | is one node of the tree |
type | is the bitmask of node types we want to consider |
name | is the name of the child to get. This parameter is only relevant for node with types: ROXML_ELM_NODE, ROXML_ATTR_NODE, ROXML_PI_NODE |
nth | the id of attribute to read |
Definition at line 81 of file roxml_stub.c.
ROXML_STUB int roxml_get_nodes_nb | ( | node_t * | n, |
int | type | ||
) |
number of nodes getter function
This function returns the number of nodes matching type flag contained in a given node all other roxml_get_*_nb are wrapper to this
n | is one node of the tree |
type | is the bitmask of node types we want to consider |
example: given the following xml file
<xml> <!-- comment --> <?value="2"?> <product id="42" class="item"/> <product id="43" class="item"/> </xml>
Definition at line 75 of file roxml_stub.c.
namespace getter function
This function returns the namespace of a node
n | is one node of the tree |
example: given the following xml file
<xml xmlns:test="http://www.test.org"> <test:item1 test:value1="3"/> </xml>
Definition at line 87 of file roxml_stub.c.
parent getter function
This function returns the parent of a given node
n | is one node of the tree |
Definition at line 189 of file roxml_stub.c.
process-instruction getter function
This function returns the nth process-instruction of a node.
n | is one node of the tree |
nth | is the id of the pi to get |
example: given the following xml file
<xml> <item1/> <?test value="2"?> <?test param="3"?> <item2/> <item3/> </xml>
Definition at line 99 of file roxml_stub.c.
|
inline |
process-instruction number getter function
This function return the number of process-instruction in a given node
n | is one node of the tree |
Definition at line 93 of file roxml_stub.c.
prev sibling getter function
This function returns the prev sibling of a given node
n | is one node of the tree |
Definition at line 177 of file roxml_stub.c.
root getter function
This function returns the root of a tree containing the given node The root is defined as a virtual node that contains all first rank nodes if document is not a valid xml document:
<data1> <item/> <item/> </data1> <data2> <item/> <item/> </data2>
will be processed successfully and the root node will have 2 children: data1 and data2
if document was:
<?xml version="1.0"> <doc> <data1> <item/> <item/> </data1> <data2> <item/> <item/> </data2> </doc>
In this case, the node "doc" will be the root, and will contain 2 children: data1 and data2
For a document to be valid, following conditions must be met:
n | is one node of the tree |
Definition at line 195 of file roxml_stub.c.
text node getter function
this function return the text content of a node as a ROXML_TXT_NODE the content of the text node can be read using the roxml_get_content function
n | the node that contains text |
nth | the nth text node to retrieve |
example: given this xml file:
<xml> This is <item/> an example <item/> of text nodes </xml>
Definition at line 123 of file roxml_stub.c.
|
inline |
text node number getter function
this function return the number of text nodes in a standard node
n | the node to search into |
Definition at line 117 of file roxml_stub.c.
|
inline |
node type function
This function tells if a node is an ROXML_ATTR_NODE, ROXML_TXT_NODE, ROXML_PI_NODE, ROXML_CMT_NODE or ROXML_ELM_NODE. Warning: ROXML_CDATA_NODE are special. They return a type as ROXML_TXT_NODE.
n | is the node to test |
Definition at line 153 of file roxml_stub.c.
ROXML_STUB node_t * roxml_load_buf | ( | char * | buffer | ) |
load function for buffers
This function load a document by parsing all the corresponding nodes. The document must be contained inside the char * buffer given in parameter and remain valid until the roxml_close() function is called
buffer | the XML buffer to load |
Definition at line 235 of file roxml_stub.c.
ROXML_STUB node_t * roxml_load_doc | ( | char * | filename | ) |
load function for files
This function load a file document by parsing all the corresponding nodes
filename | the XML document to load |
Definition at line 209 of file roxml_stub.c.
ROXML_STUB node_t * roxml_load_fd | ( | int | fd | ) |
load function for file descriptors
This function load a document by parsing all the corresponding nodes
fd | the opened file descriptor to XML document to load |
Definition at line 203 of file roxml_stub.c.
ROXML_STUB int roxml_parse_buff | ( | roxml_load_ctx_t * | context, |
roxml_parser_item_t * | parser, | ||
char * | buffer | ||
) |
generic load function
This function parse a buffer document and all the corresponding nodes
context | internal data used for parsing |
parser | the parser object to run |
buffer | address of buffer that contains xml |
Definition at line 253 of file roxml_stub.c.
ROXML_STUB int roxml_parse_file | ( | roxml_load_ctx_t * | context, |
roxml_parser_item_t * | parser, | ||
FILE * | file | ||
) |
generic load function
This function parse a file document and all the corresponding nodes
context | internal data used for parsing |
parser | the parser object to run |
file | file pointer to the document |
Definition at line 227 of file roxml_stub.c.
ROXML_STUB int roxml_read_buff | ( | int | pos, |
int | size, | ||
char * | buffer, | ||
node_t * | node | ||
) |
read xml doc function
this function read inside a xml buffer and fill the given buffer
pos | the pos in the xml document |
size | the size of the data to read |
buffer | the destination buffer |
node | the node that belong to the tree we want to read to |
Definition at line 241 of file roxml_stub.c.
ROXML_STUB int roxml_read_file | ( | int | pos, |
int | size, | ||
char * | buffer, | ||
node_t * | node | ||
) |
read xml doc function
this function read inside a xml file and fill the given buffer
pos | the pos in the xml document |
size | the size of the data to read |
buffer | the destination buffer |
node | the node that belong to the tree we want to read to |
Definition at line 215 of file roxml_stub.c.
namespace setter function
This function set the namespace of a node to the given namespace definition. The namespace must be previously defined in the xml tree in an ancestor of node n.
n | is one node of the tree |
ns | is one nsdef node of the tree |
Definition at line 53 of file roxml_stub.c.
exec path function
This function return a node set (table of nodes) corresponding to a given xpath. resulting node set should be roxml_release when not used anymore (but not individual nodes)
n | is one node of the tree |
path | the xpath to use |
nb_ans | the number of results |
handled xpath are described in xpath handling
Definition at line 167 of file roxml_stub.c.