我需要在我的一些XML节点中嵌入一些HTML,并且消费者希望它在CDATA部分中。他们希望CDATA保留为<![CDATA[ ]]>.
但是开始和结束尖括号正在被转义,因此它们正在接收<![CDATA[]]>
。我尝试了许多不同的方法,但似乎没有任何效果。并且似乎没有构建到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;
}
答案 0 :(得分:0)
检查重定时代码后,它们看起来像是&#34;逃避&#34;所有字符串/字符。因此,在这种情况下,我认为唯一的解决方案是&#34;写&#34;通过输出流围绕xml编写器:
writer.getWriter().write("<![CDATA[");
// insert CDATA data here
writer.getWriter().write("]]");
可能还有其他解决方案,但在这种情况下,这似乎是最直接的。我相信 这是对restlet api的疏忽。