EBS报表输出XML时标签错误问题

在开发EBS报表将报表内容输出为XML格式文件时,出现了如下的错误:

XML标签错误

图1:XML标签错误

出现如上错误是因为,输出内容中含有<>括起来的字符串,而<>被认为是XML标签了,由于前后不匹配,就认为无法输出,而导致XML文件有问题。解决上面这样的问题,可以从两个两个方面去考虑:

1、使用CDATA

CDATA指的是不由XML解析器进行解析的文本数据,在标记CDATA下,所有的标记、实体引用都被忽略,而被XML处理程序当作纯粹的字符数据对待。格式如下:<![CDATA[文本内容]]>。

2、使用转义字符

就是使用转义字符将可能被XML解析程序错误解析的字符进行转义,比如将<>分别解析成&lt;和&gt;。

在XML中有5个预定义的实体引用:

&lt; < 小于号
&gt; > 大于号
&amp; & 与(和)号
&apos; ' 单引号
&quot; " 双引号

下面是PL/SQL中的一段转义代码,可以用作其他程序语言的参考来修改:

FUNCTION get_string_xml(p_string IN VARCHAR2) RETURN VARCHAR2 IS
    l_temp VARCHAR2(32767);
BEGIN
    l_temp := p_string;
    l_temp := REPLACE(l_temp,
                      '<',
                      '&lt;');
    l_temp := REPLACE(l_temp,
                      '>',
                      '&gt;');
    l_temp := REPLACE(l_temp,
                      '',
                      '&amp;');
    l_temp := REPLACE(l_temp,
                      '‘',
                      '&apos;');
    l_temp := REPLACE(l_temp,
                      '’',
                      '&apos;');
    l_temp := REPLACE(l_temp,
                      '“',
                      '&quot;');
    l_temp := REPLACE(l_temp,
                      '”',
                      '&quot;');
    l_temp := REPLACE(l_temp,
                      '&',
                      '&amp;');
    RETURN l_temp;
END;

在对XML中的内容进行输出时,都首先用get_string_xml()方法进行转义一下,然后再进行输出。

本文标题:EBS报表输出XML时标签错误问题

本文链接:http://yedward.net/?id=320

本文版权归作者所有,欢迎转载,转载请以文字链接的形式注明文章出处。

相关文章