将结构转换为 XML

问题描述 投票:0回答:1

我从 javascript 接收了 xml 并将其解析为结构。

 struct gcrInfoStruct {
    var folderView = " "
    var actionType = " "
    var isProtocolReview = " "
    var folder: [folderDetail] = []
}

我如何将此结构转换回 xml 以传递给 javascript?

ios swift
1个回答
0
投票

从你的代码中我不知道

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

© www.soinside.com 2019 - 2024. All rights reserved.