ios - 结构转换为 xml (Swift)

标签 ios swift

我从 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 模式有所不同,但希望这里有足够的内容可以帮助您入门。

关于ios - 结构转换为 xml (Swift),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39223382/

相关文章:

iOS - NSUserDefaults 值为 'valueForKey' 返回 null 但不是 null

swift - 使用 AutoLaout 向 UIButton 添加 CAShapeLayer 未正确显示

iOS 如何加密图像和数据 Swift 4

ios - 如何使用 Swift 正确设置圆形 imageView?

swift - 不能使用 Swift 数组的 first() 方法

ios - 在 UITableViewController 中加载 GADBannerView

objective-c - 在 4.2+ 中,如何设置项目以像 XCode 4.0 中的 'Window-Based Application' 项目模板一样运行?

iphone - 最低操作系统版本不正确

ios - 如何使用collectionview流布局来获得正确的 View ?

ios - 在 uibutton 内旋转 png