通过我正在使用的服务,大多数响应都是XML格式,但有些是纯文本。设置它的最佳方法是什么?
目前我有这个:
// Root should return plain text, don't try to transform it
configureTransformer("/") { (content: String, entity) -> String? in
return content
}
// Most data is XML
configureTransformer("**") { (content: NSData, entity) -> NSXMLDocument? in
return try? NSXMLDocument(data: content, options: 0)
}
configureTransformer("**/properties/*") {
(content: NSData, entity) -> String? in
return String(data: content, encoding: NSUTF8StringEncoding)
}
..但是当我查询根URL时,这将是纯文本,我收到一个错误,因为NSData - >无法应用NSXMLDocument转换器。
编辑:当内容类型为application / xml时,我真正想要的是应用XML转换器。有没有办法做到这一点?
答案 0 :(得分:1)
根据我在Service.init()
中看到的内容,我做到了这一点,而且效果很好:
func XMLResponseTransformer(
transformErrors: Bool = true) -> Siesta.ResponseTransformer
{
return Siesta.ResponseContentTransformer(transformErrors: transformErrors) {
(content: NSData, entity: Siesta.Entity) throws -> NSXMLDocument in
return try NSXMLDocument(data: content, options: 0)
}
}
configure(description: "xml") {
$0.config.pipeline[.parsing].add(XMLResponseTransformer(),
contentTypes: [ "*/xml" ])
}