将CDATA部分插入使用SAX的Restlet Web服务生成的XML中

时间:2014-12-18 19:22:18

标签: xml restlet cdata

我需要在我的一些XML节点中嵌入一些HTML,并且消费者希望它在CDATA部分中。他们希望CDATA保留为<![CDATA[ ]]>.但是开始和结束尖括号正在被转义,因此它们正在接收&lt;![CDATA[]]&gt;。我尝试了许多不同的方法,但似乎没有任何效果。并且似乎没有构建到Restlet框架中的任何功能。还有其他人遇到过这个问题并找到了解决方案吗?这是我的代码示例:

@Get
public Representation toXml() {

    // Create a new SAX representation
    SaxRepresentation result = new SaxRepresentation() {

        public void write(org.restlet.ext.xml.XmlWriter writer)
                throws IOException {
...

        try {
                // Start document
                writer.startDocument();

                // Append the root node
                writer.startElement(COMPANIES); 

      // I want to start the CDATA section here.

      writer.startElement(BRANCHES);
                if((mfgRepList != null) && (mfgRepList.size() > 0)){
                    writer = MfgRep.getMfgRepHtml(writer, mfgRepList);  
                }
                writer.endElement(BRANCHES);

      // I want to end the CDATA section here.


      writer.endElement(COMPANIES);

      writer.endDocument();
    } catch (SAXException e) {
                throw new IOException(e.getMessage());
            }
        }; // end of write

    }; // end of create new Sax representation

    return result;
}

1 个答案:

答案 0 :(得分:0)

检查重定时代码后,它们看起来像是&#34;逃避&#34;所有字符串/字符。因此,在这种情况下,我认为唯一的解决方案是&#34;写&#34;通过输出流围绕xml编写器:

    writer.getWriter().write("<![CDATA[");
    // insert CDATA data here
    writer.getWriter().write("]]");

可能还有其他解决方案,但在这种情况下,这似乎是最直接的。我相信 这是对restlet api的疏忽。