SWIFT 解析xml

这篇博客介绍了如何在Swift中利用NSXMLParser解析XML文件,包括通过api链接初始化解析器的方法。此外,还提到了第三方库TBXML作为替代方案,并提供了TBXML的官方网址。同时,提到了AFNetworking,虽然主要用于网络操作,但在解析流行格式时也可能有用,适合进一步学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前面通过socket连接服务器以后因为传输的是xml文件所以要根据NSXMLparser 进行

api链接

https://developer.apple.com/library/ios/documentation/Cocoa/Reference/Foundation/Classes/NSXMLParser_Class/index.html#//apple_ref/occ/instm/NSXMLParser/initWithStream:

还有可用的第三方xml库

TBXML

http://www.tbxml.co.uk/

AFNetwork 中文教程 用于解析网络上流行的格式,用到的话再深入了解

http://www.tuicool.com/articles/Ifi2eu

//
//  XmlParser.swift
//  udpSocket
//
//  Created by hyshi on 15/3/11.
//  Copyright (c) 2015年 hyshi. All rights reserved.
//

import Foundation

class XmlParser : NSObject , NSXMLParserDelegate{
    
    
    override init(){
        super.init()
        setupparser()
    }
    func setupparser(){
        
      
        
        var xmlPatch : NSString! = NSString()
        var error : NSXMLParserError?
        xmlPatch = NSBundle.mainBundle().pathForResource("student", ofType: "xml")
        var  xmlContent : NSString! = NSString(contentsOfFile: xmlPatch, encoding: NSUTF8StringEncoding, error: nil)
        println("\(xmlContent)")
        var myParse = NSXMLParser(data: xmlContent.dataUsingEncoding(NSUTF8StringEncoding))
        myParse.delegate = self
        
        
        
        if(!myParse.parse()){
            println("\(myParse.parserError)")
        }
        
    }
    
    func parserDidStartDocument(parser: NSXMLParser!) {
        println("开始解析xml")
    }
    func parserDidEndDocument(parser: NSXMLParser!) {
        println("解析完毕")
    }
    private var currentTagName : NSString!
    private var itemData : NSMutableArray! = NSMutableArray()
    func parser(parser: NSXMLParser!, didStartElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!, attributes attributeDict: [NSObject : AnyObject]!) {
        
        println("uuuuuu")
        currentTagName  = elementName
        if currentTagName.isEqualToString("student"){
            
            var noteid: AnyObject?    = attributeDict["id"]
            var dict : NSMutableDictionary = NSMutableDictionary()
            dict.setValue(noteid, forKey: "id")
            
            itemData.addObject(dict)
            
        }
        println("currentTagName ==\(currentTagName)")
        
        
    }
    func parser(parser: NSXMLParser!, foundCharacters string: String!) {
        
        println(string)
       
        
    }
    func parser(parser: NSXMLParser!, didEndElement elementName: String!, namespaceURI: String!, qualifiedName qName: String!) {
        println("didend")
    }
    //获取cdata块数据
    func parser(parser: NSXMLParser!, foundCDATA CDATABlock: NSData!) {
        println("foundCDATA")
    }

}

xml文件

<?xml version="1.0"   encoding="UTF-8" ?>
<students>
<student id='1'>
<name>john</name>
<chinese>15</chinese>
<english>356</english>
<math>45</math>
</student>
</students>

自己用swift写的简单的xml 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值