## RestXmlParser RestXmlParser |

## Synopsis

                        RestXmlParser;
    struct              RestXmlNode;
    RestXmlParser *     rest_xml_parser_new                 (void);
    RestXmlNode *       rest_xml_parser_parse_from_data     (RestXmlParser *parser,
                                                             const gchar *data,
                                                             goffset len);
    RestXmlNode *       rest_xml_node_ref                   (RestXmlNode *node);
    void                rest_xml_node_unref                 (RestXmlNode *node);
    const gchar *       rest_xml_node_get_attr              (RestXmlNode *node,
                                                             const gchar *attr_name);
    RestXmlNode *       rest_xml_node_find                  (RestXmlNode *start,
                                                             const gchar *tag);

## Object Hierarchy

      GObject
       +----RestXmlParser

      GBoxed
       +----RestXmlNode

## Description

## Details

### RestXmlParser

    typedef struct _RestXmlParser RestXmlParser;

### struct RestXmlNode

    struct RestXmlNode {
      gchar *name;
      gchar *content;
      GHashTable *children;
      GHashTable *attrs;
      RestXmlNode *next;
    };

gchar *`name`; | the name of the element
gchar *`content`; | the textual content of the element
GHashTable *`children`; | a GHashTable of string name to RestXmlNode for the children of the element.
GHashTable *`attrs`; | a GHashTable of string name to string values for the attributes of the element.
RestXmlNode *`next`; | the sibling RestXmlNode with the same name

### rest_xml_parser_new ()

    RestXmlParser *     rest_xml_parser_new                 (void);

Create a new RestXmlParser, for parsing XML documents.

Returns : | a new RestXmlParser.

### rest_xml_parser_parse_from_data ()

    RestXmlNode *       rest_xml_parser_parse_from_data     (RestXmlParser *parser,
                                                             const gchar *data,
                                                             goffset len);

Parse the XML in `data`, and return a new RestXmlNode. If `data` is invalid XML, `NULL` is returned.

`parser` : | a RestXmlParser
`data` : | the XML content to parse
`len` : | the length of `data`, or -1 if `data` is a nul-terminated string
Returns : | a new RestXmlNode, or `NULL` if the XML was invalid.

### rest_xml_node_ref ()

    RestXmlNode *       rest_xml_node_ref                   (RestXmlNode *node);

### rest_xml_node_unref ()

    void                rest_xml_node_unref                 (RestXmlNode *node);

### rest_xml_node_get_attr ()

    const gchar *       rest_xml_node_get_attr              (RestXmlNode *node,
                                                             const gchar *attr_name);

Get the value of the attribute named `attr_name`, or `NULL` if it doesn't exist.

`node` : | a RestXmlNode
`attr_name` : | the name of an attribute
Returns : | the attribute value. This string is owned by RestXmlNode and should not be freed.

### rest_xml_node_find ()

    RestXmlNode *       rest_xml_node_find                  (RestXmlNode *start,
                                                             const gchar *tag);

Searches for the first child node of `start` named `tag`.

`start` : | a RestXmlNode
`tag` : | the name of a node
Returns : | the first child node, or `NULL` if it doesn't exist.