iOS swift中的xml解析

iOS swift中的xml解析,第1张

概述我正在使用Aadhar卡的条形码或QR码扫描.我得到的响应为以下xml格式.如何使用xml解析将其转换为字典格式? <?xml version="1.0" encoding="UTF-8"?><PrintLetterBarcodeData uid="685860050795" name="Sangeetha D" gender="F" yob="1989" co="W/O: Dhanansekar 我正在使用Aadhar卡的条形码或QR码扫描.我得到的响应为以下xml格式.如何使用xml解析将其转换为字典格式?
<?xml version="1.0" enCoding="UTF-8"?><PrintLetterbarcodeData uID="685860050795" name="Sangeetha D" gender="F" yob="1989" co="W/O: Dhanansekaran" house="632" street="Saradhambal nagar" lm="agaramel" vtc="Nazarathpettai" po="Nazarethpettai" dist="Tiruvallur" subdist="Poonamallee" state="Tamil Nadu" pc="600123" dob="03/06/1989"/>

我尝试使用以下代码进行解析

public func parser(parser: NSXMLParser,dIDStartElement elementname: String,namespaceURI: String?,qualifIEdname qname: String?,attributes attributeDict: [String : String]) {    currentElement=elementname;    print(currentElement)}public func parser(parser: NSXMLParser,dIDEndElement elementname: String,qualifIEdname qname: String?) {    currentElement="";}public func parser(parser: NSXMLParser,foundCharacters string: String) {}

但它总是将currentElement作为“PrintLetterbarcodeData”返回

解决方法 这是我在Swift 3中编写的一些解析代码,基于我之前在Swift 2.0中编写的 Google News RSS reader.我修改了这段代码来处理PrintLetterbarcodeData元素列表以及单个元素:
class barcodeData {    var uID: String    var name: String    var gender: String    var yob: String    var co: String    var house: String    var street: String    var lm: String    var vtc: String    var po: String    var dist: String    var subdist: String    var state: String    var pc: String    var dob: String    init?(dictionary: [String : String]) {        guard let uID = dictionary["uID"],let name = dictionary["name"],let gender = dictionary["gender"],let yob = dictionary["yob"],let co = dictionary["co"],let house = dictionary["house"],let street = dictionary["street"],let lm = dictionary["lm"],let vtc = dictionary["vtc"],let po = dictionary["po"],let dist = dictionary["dist"],let subdist = dictionary["subdist"],let state = dictionary["state"],let pc = dictionary["pc"],let dob = dictionary["dob"] else {            return nil        }        self.uID = uID        self.name = name        self.gender = gender        self.yob = yob        self.co = co        self.house = house        self.street = street        self.lm = lm        self.vtc = vtc        self.po = po        self.dist = dist        self.subdist = subdist        self.state = state        self.pc = pc        self.dob = dob    }}class MyParser: NSObject {    var parser: XMLParser    var barcodes = [barcodeData]()    init(xml: String) {        parser = XMLParser(data: xml.data(using: String.EnCoding.utf8)!)        super.init()        parser.delegate = self    }    func parseXML() -> [barcodeData] {        parser.parse()        return barcodes    }}extension MyParser: XMLParserDelegate {    func parser(_ parser: XMLParser,attributes attributeDict: [String : String]) {        if elementname == "PrintLetterbarcodeData" {            if let barcode = barcodeData(dictionary: attributeDict) {                barcodes.append(barcode)            }        }    }}

用法:

let xmlString = "<?xml version=\"1.0\" enCoding=\"UTF-8\"?><PrintLetterbarcodeData uID=\"685860050795\" name=\"Sangeetha D\" gender=\"F\" yob=\"1989\" co=\"W/O: Dhanansekaran\" house=\"632\" street=\"Saradhambal nagar\" lm=\"agaramel\" vtc=\"Nazarathpettai\" po=\"Nazarethpettai\" dist=\"Tiruvallur\" subdist=\"Poonamallee\" state=\"Tamil Nadu\" pc=\"600123\" dob=\"03/06/1989\"/>"let parser = MyParser(xml: xmlString)let barcodes = parser.parseXML() // array of barcodesbarcodes.first // your barcode
总结

以上是内存溢出为你收集整理的iOS swift中的xml解析全部内容,希望文章能够帮你解决iOS swift中的xml解析所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1104285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存