2017-07-04 61 views
1

我正在使用Javascript(Node 6.x)中的簡單AWS Lambda函數,它應該代理意大利新聞提供者的RSS。Node.js http.get xml返回'轉義'

這是函數的代碼:

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/\"... 

這似乎是有點「逃脫」。

有人可以幫我嗎? 提前致謝...

回答

1

http.get可能工作得很好。如果您在AWS生態系統之外運行代碼,則會看到您從http.get獲取未轉義的XML。問題是,Lambda希望你返回JSON,所以當你將字符串傳遞給回調函數時,它會被轉義。

如果您通過API網關運行此功能,則可以對集成響應進行轉換。做到這一點的方法是從你的拉姆達返回一個對象:

callback(null, {myXML: xml})) 

然後API網關去整合響應區域在你GET(或POST)資源,然後單擊旁邊的200響應的箭頭。這應該揭示身體映射的區域。您要添加的映射application/xml然後添加喜歡的東西:

#set($inputRoot = $input.path('$')) 
$inputRoot.myXML 

這應該讓你漂亮乾淨的XML。這是一個有點很難形容,所以我會發布的屏幕截圖,可以幫助:

enter image description here

0

雙引號必須在雙引號字符串內部轉義(有道理,對吧?)。現在你只需要解析XML,例如使用xml2js

+0

這是有道理的,但事實是,我不應該讓外部雙引號的。我想我可能不需要xml2js,因爲該函數的唯一功能是將xml返回給客戶端,而不是將它用於jquery本地方法。 – ciamiz