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它加载xmlvariables内的响应。 我不明白为什么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