- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
创建了一个基于 Spring MVC 的 Restful Controller ,它采用硬编码的 RSS HTTP URL 并将其从 XML 转换为 JSON:
RssFeedController:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import org.apache.commons.io.IOUtils;
import org.apache.log4j.Logger;
import org.json.JSONObject;
import org.json.XML;
import com.fasterxml.jackson.databind.ObjectMapper;
@RestController
public class RssFeedController {
private HttpHeaders headers = null;
public RssFeedController() {
headers = new HttpHeaders();
headers.add("Content-Type", "application/json");
}
@RequestMapping(value = "/v2/convertToJson", method = RequestMethod.GET, produces = "application/json")
public String getRssFeedAsJson() throws IOException {
InputStream xml = getInputStreamForURLData("http://www.samplefeed.com/feed");
String xmlString = IOUtils.toString(xml);
JSONObject jsonObject = XML.toJSONObject(xmlString);
ObjectMapper objectMapper = new ObjectMapper();
Object json = objectMapper.readValue(jsonObject.toString(), Object.class);
String response = objectMapper.writeValueAsString(json);
return response;
}
public static InputStream getInputStreamForURLData(String targetUrl) {
URL url = null;
HttpURLConnection httpConnection = null;
InputStream content = null;
try {
url = new URL(targetUrl);
URLConnection conn = url.openConnection();
conn.setRequestProperty("User-Agent", "Mozilla/5.0");
httpConnection = (HttpURLConnection) conn;
int responseCode = httpConnection.getResponseCode();
content = (InputStream) httpConnection.getInputStream();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
return content;
}
pom.xml
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20170516</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.5</version>
</dependency>
因此,原始 RSS Feed 的内容如下:
<item>
<title>October Fest Weekend</title>
<link>http://www.samplefeed.com/feed/OctoberFestWeekend</link>
<comments>http://www.samplefeed.com/feed/OctoberFestWeekend/#comments</comments>
<pubDate>Wed, 04 Oct 2017 17:08:48 +0000</pubDate>
<dc:creator><![CDATA[John Doe]]></dc:creator>
<category><![CDATA[Uncategorized]]></category>
<guid isPermaLink="false">http://www.samplefeed.com/feed/?p=9227</guid>
<description><![CDATA[<p>
</p>
<p>Doors Open:6:30pm<br />
Show Begins: 7:30pm<br />
Show Ends (Estimated time): 11:00pm<br />
Location: Staples Center</p>
<p>Directions</p>
<p>Map of ...</p>
<p>The post <a rel="nofollow" href="http://www.samplefeed.com/feed/OctoberFestWeekend/">OctoberFest Weekend</a> appeared first on <a rel="nofollow" href="http://www.samplefeed.com">SampleFeed</a>.</p>
]]></description>
这会呈现为 JSON,如下所示:
{
"guid": {
"content": "http://www.samplefeed.com/feed/?p=9227",
"isPermaLink": false
},
"pubDate": "Wed, 04 Oct 2017 17:08:48 +0000",
"category": "Uncategorized",
"title": "October Fest Weekend",
"description": "<p>\n??</p>\n<p>Doors Open:6:30pm<br />\nShow Begins:?? 7:30pm<br />\nShow Ends (Estimated time):??11:00pm<br />\nLocation: Staples Center</p>\n<p>Directions</p>\n<p>Map of ...</p>\n<p>The post <a rel=\"nofollow\" href=\"http://www.samplefeed.com/feed/OctoberFestWeekend/\">OctoberFest Weekend</a> appeared first on <a rel=\"nofollow\" href=\"http://www.samplefeed.com\">Sample Feed</a>.</p>\n",
"dc:creator": "John Doe",
"link": "http://www.samplefeed.com/feed/OctoberFestWeekend",
"comments": "http://www.samplefeed.com/feed/OctoberFestWeekend/#comments"
}
请注意,在渲染的 JSON 中,“description”键的值后面有两个问号(“??”),如下所示:
"description": "<p>\n??</p>\n
此外,演出开始后还有两个问号:
<br />\nShow Begins:??
晚上 11:00 之前也是如此
Show Ends (Estimated time):??11:00pm<br />
这不是唯一显示特殊字符的模式,还有一些地方有三个 ???生成的标记以及一些地方,例如??????
例如
<title>Today’s 20th Annual Karaoke</title>
在 JSON 中呈现如下:
"title": "Today???s 20th Annual Karaoke"
和
<content-encoded>: <![CDATA[(Monte Vista High School, NY.). </span></p>]]></content:encoded>
在 JSON 中呈现如下:
"content:encoded": "(Monte Vista High School, NY.).????</span></p>
XML 中有些地方有破折号(“-”):
<strong>Welcome</strong> – Welcome to the Party!
以 JSON 格式呈现:
<strong>Welcome</strong>????? Welcome to the Party!
有谁知道如何在我的代码中设置正确的编码,以便我可以避免这些不良/特殊字符渲染问题?
最佳答案
Converting RSS Feed XML to JSON using Java is Displaying Special Characters
在逐行检查您的代码后,我得到了解决方案,我正在为您更新我的答案特殊字符响应为 ? 的问题
如果您更新这行代码
@RequestMapping(value = "/v2/convertToJson", method = RequestMethod.GET, produces = "application/json")
至
@RequestMapping(value = "/v2/convertToJson", method = RequestMethod.GET, produces = "application/json;charset=UTF-8")
您需要在使用 json 生成参数值时指定 UTF-8 字符集编码。对于我之前的误解回答,我深表歉意,但我现在更新它。
关于java - 使用 Java 将 RSS Feed XML 转换为 JSON 显示特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46656103/
我已经作为发布者向 feedly 提交了一个站点提要。但我没有找到我有多少来自任何地方的订阅者。有什么方法可以检查订阅者数量吗? 最佳答案 尝试输入如下 curl http://cloud.feedl
我正在设计一个 Feeds 系统,一个人可以发布新闻,其他人可以看到彼此的新闻,就像 Twitter 一样。 现在我将新闻保存在 HBase 中,并将它们缓存在 Redis 中。这种方法有 O(1)
我在 atom 文件中显示图像时遇到问题。它不包括谷歌阅读器、歌剧或火狐的提要中的图像。 作为起点,我在 [Atom 1.0 Syndication Format 概述] 中执行了 list 6 中的
我已经构建了一个简单的 Django 照片应用程序。用户可以上传照片、关注其他用户和喜欢照片。为了处理用户之间的关系(关注和取消关注),我使用了一个名为 django-relationships 的包
我需要在网站中显示 Telegram channel 帖子。但我不知道如何将 Telegram channel 导出为 xml。我需要文本和图像以及其他文件和媒体,例如 mp4 - pdf 或其他内容
我正在使用Google Feed JSAPI读取/解析提要。问题是,当提要更改时,之前的条目将变得无效(链接和图像不起作用),因此我无法加载提要的缓存版本。我认为加载提要时会有一个选项不使用缓存版本,
我正在使用 Facebook 页面插件集成 Facebook 页面提要 https://developers.facebook.com/docs/plugins/page-plugin 虽然它几乎适用
我正在用 PHP 构建一个 RSS 提要聚合器/阅读器。由于 RSS 本质上是用户生成的内容,因此我不想依赖提要内容的安全性。 我正在寻求有关清理供稿内容以便在用户设备上存储和显示的建议。目前,我正在
因为我运行一个博客聚合器网站,它每小时检查大量 RSS 提要列表以获取新帖子,所以如果可以使用 google feed api 或 Google AJAX Feed API 我会很高兴而不是让 cro
嘿,我有这两个 RSS 源 - http://www.petrolprices.com/feeds/averages.xml?search_type=town&search_value=kilmarn
我无法使用 Google Feed API 加载图像,我正在使用 mediaGroup 加载图像。 这是我为获取提要而编写的 javascript 代码 google.load("feeds", "
很抱歉,如果之前有人问过这个问题 - 有一个标题相似的问题,但它不完全是我正在寻找的内容。 我正在做的是从数据库中获取结果并将其打印在适当的标签内以创建 RSS Feed。 唯一的问题是文章正文包含
我尝试发布消息来供稿,但她只显示在个人资料中。 如何使此消息显示在新闻源和个人资料源上? 这是我的示例代码: SBJSON *jsonWriter = [[SBJSON new] autoreleas
我正在尝试使用 Google feeds 将 RSS feed 添加到我的网站。问题是它限制了条目的数量。我只看到 4 个条目,但当我 curl RSS 时,我看到 28 个条目。我怎样才能让它加载其
我试图在不使用任何插件的情况下在 jQuery 中构建 rss 提要,我在这里找到了解决方案:designshack.net它使用不再使用的 Google Feed API。我发现解决方案很简单,但它
我从 Node.js 服务器连接到 Google Feed API(使用 https://stackoverflow.com/a/22821516/3303704 )。但每次我使用它时,它似乎都会加载
我正在使用以下代码获取提要: NSDictionary *dirTemp; NSError *error; NSStringEncoding encoding; NSString *strUrl =
为什么我的日历没有将 JSON Feed 中的数据放入我的网页上? $(document).ready(function() { var date = new Date(); var
旧版 Facebook News Feed 和新版之间是否存在问题? 我的位置开放图集合的输出之间存在冲突。 在旧的新闻提要中,我在使用 Open Graph 进行跨平台 checkin 时得到了这个
我正在尝试在 Django (Python) 环境中使用 Amazon API 为产品设置最高价格。我已经通过计算 md5 函数解决了这个问题,该函数的值与 Amazon MWS Scratchpad
我是一名优秀的程序员,十分优秀!