我从 javascript 接收了 xml 并将其解析为结构。
struct gcrInfoStruct {
var folderView = " "
var actionType = " "
var isProtocolReview = " "
var folder: [folderDetail] = []
}
我如何将此结构转换回 xml 以传递给 javascript?
从你的代码中我不知道
folderDetail
类型是什么样的,但我们假设它是这样的:
struct folderDetail {
var desc:String
var value:String
}
我也不知道你的 XML 的模式是什么,但我们假设它是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<gcrInfoStruct>
<folderView>Folder View String</folderView>
<actionType>Action Type String</actionType>
<isProtocolReview>True or False</isProtocolReview>
<folder>
<folder1desc>folder1value</folder1desc>
<folder2desc>folder2value</folder2desc>
</folder>
</gcrInfoStruct>"
如果我猜对了,那么为了生成 XML,我们只需要生成一个与基于结构的模式匹配的字符串,例如
extension gcrInfoStruct {
func xml() -> String {
var string = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><gcrInfoStruct><folderView>\(folderView)</folderView><actionType>\(actionType)</actionType><isProtocolReview>\(isProtocolReview)</isProtocolReview><folder>"
for i in self.folder {
string.appendContentsOf("<\(i.desc)>\(i.value)</\(i.desc)>")
}
string.appendContentsOf("</folder></gcrInfoStruct>")
return string
}
}
为了实现我们会做这样的事情:
var gcr = gcrInfoStruct()
// update properties
let xml = gcr.xml()
但是如果我们想将 XML 作为 NSData 返回,那么我们需要添加以下额外代码:
extension gcrInfoStruct {
func xmlData() -> NSData? {
return self.xml().dataUsingEncoding(NSUTF8StringEncoding)
}
}
为了实现我们会做这样的事情:
var gcr = gcrInfoStruct()
// update properties
let data = gcr.xmlData()
folderDetail
可能不仅仅是一对字符串,或者 XML 模式有所不同,但希望这里有足够的内容可以帮助您入门。