RSS 中的 CDATA 部分不起作用 - rometools
CDATA section in RSS not working - rometools
我正在使用 rometools 进行 rss 提要。我正在尝试在 RSS 项目的内容部分的 cdata 内使用 html 标签。这是我的代码:
public class RssView extends AbstractRssFeedView {
@Override
protected List<com.rometools.rome.feed.rss.Item> buildFeedItems(Map<String, Object> map,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
List<Item> items = new ArrayList<>();
Object ob = map.get("feeds");
if (ob instanceof List){
for(int i = 0; i < ((List<?>)ob).size(); i++){
Object articleObj = ((List<?>) ob).get(i);
Article article = (Article)articleObj;
Item item = new Item();
item.setTitle(article.getTitle());
Guid guid = new Guid();
guid.setValue(item.getLink());
item.setGuid(guid);
item.setPubDate(article.getCreatedTime());
Description description = new Description();
description.setValue(article.getDescrition());
item.setDescription(description);
Content content = new Content();
content.setValue(buildContent(article));
item.setContent(content);
items.add(item);
}
}
return items;
}
@Override
protected void buildFeedMetadata(Map<String, Object> model, Channel channel,
HttpServletRequest request) {
channel.setTitle("Article");
channel.setLink("http://www.");
channel.setDescription("desciprtion");
channel.setLanguage("en-us");
}
private String buildContent(Article article) {
StringBuilder sb = new StringBuilder();
sb.append("<![CDATA[" +
"<!doctype html>\n]]>");
return sb.toString();
}
问题是 cdata 中不应转义的 html 标签正在转义。
你想做的事,目前在罗马是不可能的。看到这个问题:https://github.com/rometools/rome/issues/280
我最终使用了
channel.setDescription(StringEscapeUtils.escapeXml11(getProblematicDescription()));
来自
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>
我正在使用 rometools 进行 rss 提要。我正在尝试在 RSS 项目的内容部分的 cdata 内使用 html 标签。这是我的代码:
public class RssView extends AbstractRssFeedView {
@Override
protected List<com.rometools.rome.feed.rss.Item> buildFeedItems(Map<String, Object> map,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse) throws Exception {
List<Item> items = new ArrayList<>();
Object ob = map.get("feeds");
if (ob instanceof List){
for(int i = 0; i < ((List<?>)ob).size(); i++){
Object articleObj = ((List<?>) ob).get(i);
Article article = (Article)articleObj;
Item item = new Item();
item.setTitle(article.getTitle());
Guid guid = new Guid();
guid.setValue(item.getLink());
item.setGuid(guid);
item.setPubDate(article.getCreatedTime());
Description description = new Description();
description.setValue(article.getDescrition());
item.setDescription(description);
Content content = new Content();
content.setValue(buildContent(article));
item.setContent(content);
items.add(item);
}
}
return items;
}
@Override
protected void buildFeedMetadata(Map<String, Object> model, Channel channel,
HttpServletRequest request) {
channel.setTitle("Article");
channel.setLink("http://www.");
channel.setDescription("desciprtion");
channel.setLanguage("en-us");
}
private String buildContent(Article article) {
StringBuilder sb = new StringBuilder();
sb.append("<![CDATA[" +
"<!doctype html>\n]]>");
return sb.toString();
}
问题是 cdata 中不应转义的 html 标签正在转义。
你想做的事,目前在罗马是不可能的。看到这个问题:https://github.com/rometools/rome/issues/280
我最终使用了
channel.setDescription(StringEscapeUtils.escapeXml11(getProblematicDescription()));
来自
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.8.1</version>
</dependency>