Node.js http.get xml返回'转义'
我正在使用JavaScript(节点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) }) }) }
它工作,或者至less它加载xml
variables内的响应。 我不明白为什么string是这样的:
"<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\n<rss version=\"2.0\" xmlns:content=\"http://purl.org/rss/1.0/modules/content/\"...
这似乎是一种“逃脱”。
有人可以帮我吗? 先谢谢你…
http.get
可能工作得很好。 如果您在AWS生态系统之外运行代码,则会看到您从http.get
获取未转义的XML。 问题是,Lambda希望你返回JSON,所以当你将string传递给callback函数时,它会被转义。
如果您通过API网关运行此function,则可以在集成响应中进行转换。 做到这一点的方法是从你的lambda返回一个对象:
callback(null, {myXML: xml}))
然后在API网关中,转至GET
(或POST)资源下的集成响应区域,然后单击200
响应旁边的箭头。 这应该显示身体映射区域。 你想为application/xml
添加一个映射,然后添加如下所示的内容:
#set($inputRoot = $input.path('$')) $inputRoot.myXML
这应该让你很好干净的XML。 这有点难以描述,所以我会发布一个可能有帮助的屏幕截图:
双引号必须在双引号string内转义(有道理,对吧?)。 现在你只需要parsingXML,例如使用xml2js