diff options
author | Ross Burton <ross@linux.intel.com> | 2010-08-12 14:56:34 +0100 |
---|---|---|
committer | Ross Burton <ross@linux.intel.com> | 2010-10-05 13:03:53 +0100 |
commit | 96e60c57663e949c34a248ac62ffa86da1c636aa (patch) | |
tree | 595d679f1004296f8d7fb25b48578211167550d0 | |
parent | 0b554e605b50562b3e6af066ef4d7687993fe62f (diff) | |
download | librest-96e60c57663e949c34a248ac62ffa86da1c636aa.tar.gz |
Add rest_xml_parser_parse_from_data_full
This allows the caller to pass in a base URI and character encoding.
-rw-r--r-- | rest/rest-xml-parser.c | 27 | ||||
-rw-r--r-- | rest/rest-xml-parser.h | 6 |
2 files changed, 31 insertions, 2 deletions
diff --git a/rest/rest-xml-parser.c b/rest/rest-xml-parser.c index 0d78273..bfffa79 100644 --- a/rest/rest-xml-parser.c +++ b/rest/rest-xml-parser.c @@ -277,6 +277,29 @@ rest_xml_parser_parse_from_data (RestXmlParser *parser, const gchar *data, goffset len) { + return rest_xml_parser_parse_from_data_full (parser, data, len, NULL, NULL); +} + +/** + * rest_xml_parser_parse_from_data_full: + * @parser: a #RestXmlParser + * @data: the XML content to parse + * @len: the length of @data + * @base_url: the base URL, or %NULL if unknown + * @encoding: the character encoding, or %NULL if unknown + * + * Parse the XML in @data, and return a new #RestXmlNode. If @data is invalid + * XML, %NULL is returned. + * + * Returns: a new #RestXmlNode, or %NULL if the XML was invalid. + */ +RestXmlNode * +rest_xml_parser_parse_from_data_full (RestXmlParser *parser, + const gchar *data, + goffset len, + const gchar *base_url, + const gchar *encoding) +{ xmlTextReaderPtr reader; RestXmlNode *cur_node = NULL; RestXmlNode *new_node = NULL; @@ -295,8 +318,8 @@ rest_xml_parser_parse_from_data (RestXmlParser *parser, reader = xmlReaderForMemory (data, len, - NULL, /* URL? */ - NULL, /* encoding */ + base_url, + encoding, XML_PARSE_RECOVER | XML_PARSE_NOCDATA); while (xmlTextReaderRead (reader) == 1) diff --git a/rest/rest-xml-parser.h b/rest/rest-xml-parser.h index 967c2cf..54ea449 100644 --- a/rest/rest-xml-parser.h +++ b/rest/rest-xml-parser.h @@ -83,6 +83,12 @@ RestXmlNode *rest_xml_parser_parse_from_data (RestXmlParser *parser, const gchar *data, goffset len); +RestXmlNode *rest_xml_parser_parse_from_data_full (RestXmlParser *parser, + const gchar *data, + goffset len, + const gchar *base_url, + const gchar *encoding); + GType rest_xml_node_get_type (void); RestXmlNode * rest_xml_node_ref (RestXmlNode *node); |