簡體   English   中英

將結構轉換為xml(Swift)

[英]Struct convert to xml (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,我們只需要生成一個基於struct匹配模式的字符串即可,例如

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模式有所不同,但希望這里有足夠的內容讓您入門。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM