XML元素函数编码XML<>到<和>
XMLElement function Encoding XML <> to < and >
我想构建一些 xml,从内部 XML 开始,然后添加外部 XML。这是我的代码的简化:
DO
$$
DECLARE
v_xml text;
cmd text;
BEGIN
cmd := 'select xmlelement(name myelement, ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name parentXMl, v_xml);
RETURN v_xml;
END;
$$
我希望这段代码 return:
<parentxml><myelement>test</myelement></parentxml>
取而代之 returns:
<parentxml><myelement>test</myelement></parentxml>
如何阻止 XMLElement() 将我的 XML 编码为 XML 值?
变量 v_xml
、cmd
的类型应为 XML
:
CREATE OR REPLACE FUNCTION testxml() RETURNS XML AS $$
DECLARE
v_xml XML;
cmd XML;
BEGIN
cmd := 'select xmlelement(name myelement, ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name parentXMl, v_xml);
RETURN v_xml;
END;
$$ LANGUAGE plpgsql;
结果是:
ds=# select testxml(); testxml
----------------------------------------------------
<parentxml><myelement>test</myelement></parentxml>
(1 row)
记住,元素名称应始终用引号引起来
如果您想将 xml 数据生成为文本值,请不要忘记在之后将其转换为 xml
DO
$$
DECLARE
v_xml text;
cmd text;
BEGIN
cmd := 'select xmlelement(name "myelement", ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name "parentXMl", v_xml::xml);
RETURN v_xml::xml;
END;
$$
Dimitry 是对的,您最好将 V_xml 声明为 xml 变量。
我想构建一些 xml,从内部 XML 开始,然后添加外部 XML。这是我的代码的简化:
DO
$$
DECLARE
v_xml text;
cmd text;
BEGIN
cmd := 'select xmlelement(name myelement, ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name parentXMl, v_xml);
RETURN v_xml;
END;
$$
我希望这段代码 return:
<parentxml><myelement>test</myelement></parentxml>
取而代之 returns:
<parentxml><myelement>test</myelement></parentxml>
如何阻止 XMLElement() 将我的 XML 编码为 XML 值?
变量 v_xml
、cmd
的类型应为 XML
:
CREATE OR REPLACE FUNCTION testxml() RETURNS XML AS $$
DECLARE
v_xml XML;
cmd XML;
BEGIN
cmd := 'select xmlelement(name myelement, ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name parentXMl, v_xml);
RETURN v_xml;
END;
$$ LANGUAGE plpgsql;
结果是:
ds=# select testxml(); testxml
----------------------------------------------------
<parentxml><myelement>test</myelement></parentxml>
(1 row)
记住,元素名称应始终用引号引起来
如果您想将 xml 数据生成为文本值,请不要忘记在之后将其转换为 xml
DO
$$
DECLARE
v_xml text;
cmd text;
BEGIN
cmd := 'select xmlelement(name "myelement", ''test'')';
EXECUTE cmd INTO v_xml;
v_xml := xmlelement(name "parentXMl", v_xml::xml);
RETURN v_xml::xml;
END;
$$
Dimitry 是对的,您最好将 V_xml 声明为 xml 变量。