Node.js http.get xml被返回'转义'

时间:2017-07-04 15:19:14

标签: javascript node.js xml aws-lambda

我正在使用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;。

有人能帮助我吗? 提前谢谢你......

2 个答案:

答案 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。这有点难以描述所以我会发布一个可能有帮助的屏幕截图:

enter image description here

答案 1 :(得分:0)

双引号必须在双引号字符串中转义(有道理,对吧?)。现在,您只需使用例如xml2js

解析XML