Commit 16465862 authored by Bruce Momjian's avatar Bruce Momjian

Attached is a patch that adds the function xml_encode_special_chars to

the xml2 contrib module. It's against 8.0beta4. It's intended for
commit.

Markus Bertheau <twanger@bluetwanger.de>
parent 7af770d0
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool CREATE OR REPLACE FUNCTION xml_valid(text) RETURNS bool
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict); AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
CREATE OR REPLACE FUNCTION xml_encode_special_chars(text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text CREATE OR REPLACE FUNCTION xpath_string(text,text) RETURNS text
AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict); AS 'MODULE_PATHNAME' LANGUAGE 'c' WITH (isStrict);
......
...@@ -40,6 +40,7 @@ static xmlXPathObjectPtr pgxml_xpath(text *document, xmlChar * xpath); ...@@ -40,6 +40,7 @@ static xmlXPathObjectPtr pgxml_xpath(text *document, xmlChar * xpath);
Datum xml_valid(PG_FUNCTION_ARGS); Datum xml_valid(PG_FUNCTION_ARGS);
Datum xml_encode_special_chars(PG_FUNCTION_ARGS);
Datum xpath_nodeset(PG_FUNCTION_ARGS); Datum xpath_nodeset(PG_FUNCTION_ARGS);
Datum xpath_string(PG_FUNCTION_ARGS); Datum xpath_string(PG_FUNCTION_ARGS);
Datum xpath_number(PG_FUNCTION_ARGS); Datum xpath_number(PG_FUNCTION_ARGS);
...@@ -186,6 +187,34 @@ xml_valid(PG_FUNCTION_ARGS) ...@@ -186,6 +187,34 @@ xml_valid(PG_FUNCTION_ARGS)
} }
/* Encodes special characters (<, >, &, " and \r) as XML entities */
PG_FUNCTION_INFO_V1(xml_encode_special_chars);
Datum
xml_encode_special_chars(PG_FUNCTION_ARGS)
{
text *tin = PG_GETARG_TEXT_P(0);
text *tout;
int32 ressize;
xmlChar *ts, *tt;
ts = pgxml_texttoxmlchar(tin);
tt = xmlEncodeSpecialChars(NULL, ts);
pfree(ts);
ressize = strlen(tt);
tout = (text *) palloc(ressize + VARHDRSZ);
memcpy(VARDATA(tout), tt, ressize);
VARATT_SIZEP(tout) = ressize + VARHDRSZ;
xmlFree(tt);
PG_RETURN_TEXT_P(tout);
}
static xmlChar static xmlChar
* *
pgxmlNodeSetToText(xmlNodeSetPtr nodeset, pgxmlNodeSetToText(xmlNodeSetPtr nodeset,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment