我正在使用Javascript(Node 6.x)中的一个简单的AWS Lambda函数,它应该代理'意大利新闻提供者的RSS。
这是函数的代码:
var http = require("http")
exports.handler = (event, context, callback) => {
http.get("http://www.milanotoday.it/rss/", (response) => {
response.setEncoding("utf8")
let xml = ""
response.on("data", (chunk) => { xml += chunk })
response.on("end", () => { callback(null, xml) })
})
}
它可以工作,或者至少它会在xml
变量中加载响应。
我无法理解为什么字符串是这样的:
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<rss version=\"2.0\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"...
似乎有点逃脱&#39;。
有人能帮助我吗? 提前谢谢你......
答案 0 :(得分:1)
http.get
可能正常工作。如果您在AWS生态系统之外运行代码,您将看到从http.get
获取未转义的XML。问题是Lambda希望您返回JSON,因此当您将字符串传递给回调时,它会被转义。
如果您通过API网关运行此功能,则可以在集成响应中进行转换。这样做的方法是从lambda中返回一个对象:
callback(null, {myXML: xml}))
然后在API网关中转到GET
(或POST)资源下的集成响应区域,然后单击200
响应旁边的箭头。这应该揭示身体映射的区域。您想为application/xml
添加映射,然后添加如下内容:
#set($inputRoot = $input.path('$'))
$inputRoot.myXML
这应该可以让你获得干净的XML。这有点难以描述所以我会发布一个可能有帮助的屏幕截图:
答案 1 :(得分:0)
双引号必须在双引号字符串中转义(有道理,对吧?)。现在,您只需使用例如xml2js
解析XML