NSXMLParser
来源:互联网 发布:php和java对比 编辑:程序博客网 时间:2024/05/22 02:07
1 NSXMLParser
1.1 Initializing a Parser Object
1.2 Managing Delegates
1.3 Managing Parser Behavior
1.4 Parsing
1.5 Obtaining Parser State
2 NSXMLParserDelegate
3 实战演练
3.1 XML文件
3.2 测试
1 NSXMLParser
使用NSXMLParser,我们可以解析XML文档。NSXMLParser通过委托代理的方式,将XML中的元素通过代理返回
1.1 Initializing a Parser Object
/// 通过xml路径生成public convenience init?(contentsOfURL url: NSURL)/// 通过NSData生成public init(data: NSData)/// 通过流生成@available(iOS 5.0, *)public convenience init(stream: NSInputStream)
1.2 Managing Delegates
/// 代理unowned(unsafe) public var delegate: NSXMLParserDelegate?
1.3 Managing Parser Behavior
/// 是否显示限定名称(parser:didStartElement:namespaceURI:qualifiedName:attributes: and parser:didEndElement:namespaceURI:qualifiedName:)public var shouldProcessNamespaces: Bool/// 是否显示命名空间声明(parser:didStartMappingPrefix:toURI: and parser:didEndMappingPrefix:)public var shouldReportNamespacePrefixes: Bool/// 是否禁用实体的切换(parser:foundExternalEntityDeclarationWithName:publicID:systemID:)public var shouldResolveExternalEntities: Bool
1.4 Parsing
/// 开始解析public func parse() -> Bool/// 停止解析public func abortParsing()/// 解析错误@NSCopying public var parserError: NSError? { get }
1.5 Obtaining Parser State
/// 外部实体的公共标识符public var publicID: String? { get }/// 外部系统的标识符public var systemID: String? { get }/// 行public var lineNumber: Int { get }/// 列public var columnNumber: Int { get }
2 NSXMLParserDelegate
关于NSXMLParserDelegate多数情况下,我们只使用下面几个协议。
/// MARK: 解析开始optional public func parserDidStartDocument(parser: NSXMLParser)/// MARK: 解析结束optional public func parserDidEndDocument(parser: NSXMLParser)/// MARK: 解析出错optional public func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError)/// MARK: 解析器每次在XML中找到新的元素时,会调用该方法optional public func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String])
3 实战演练
3.1 XML文件
在项目中创建文件,文件名为Main.xml
<?xml version="1.0" encoding="UTF-8"?><users xmlns="http://blog.csdn.net/y550918116j"> <user id="0" name="阳君" qq="937447974"/> <user id="1" name="阳君" qq="937447974"/></users>
3.2 测试
//// YJXMLParserVC.swift// YJFoundation//// CSDN:http://blog.csdn.net/y550918116j// GitHub:https://github.com/937447974/Blog//// Created by admin on 16/3/10.// Copyright © 2016年 阳君. All rights reserved.//import UIKit/// NSXMLParser解析XMLclass YJXMLParserVC: UIViewController, NSXMLParserDelegate { override func viewDidLoad() { super.viewDidLoad() if let url = NSBundle.mainBundle().URLForResource("Main", withExtension: "xml") { if let parser = NSXMLParser(contentsOfURL: url) { parser.shouldProcessNamespaces = false; parser.delegate = self; parser.parse() } } } // MARK: - NSXMLParserDelegate // MARK: 解析开始 func parserDidStartDocument(parser: NSXMLParser) { print(__FUNCTION__) } // MARK: 解析结束 func parserDidEndDocument(parser: NSXMLParser) { print(__FUNCTION__) } // MARK: 解析出错 func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) { print("解析错误\(parseError.localizedDescription)") } // MARK: 解析器每次在XML中找到新的元素时,会调用该方法 func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { print("\(elementName) - \(namespaceURI) - \(qName) - \(attributeDict)") }}
Appendix
Sample Code
Swift
Related Documentation
NSXMLParser Class Reference
NSXMLParserDelegate Protocol Reference
Event-Driven XML Programming Guide
Revision History
Copyright
CSDN:http://blog.csdn.net/y550918116j
GitHub:https://github.com/937447974/Blog
0 0
- NSXMLParser
- NSXMLParser
- NSXMLParser
- NSXMLParser
- NSXMLParser详解
- NSXMLParser Demo
- NSXMLParser详解
- NSXMLParser详解
- nsxmlparser 详解
- XML-NSXMLParser
- NSXMLParser解析xml
- NSXMLParser的使用
- NSXMLParser解析XML
- XML解析器 NSXMLParser
- NSXMLParser 解析 XML
- NSXMLParser和dom详解
- NSXMLParser类解析xml
- NSXMLParser XML 解析 解压
- 文章标题
- listview的优化
- [IOS]在一个工程管理多个应用
- CorePlot:用图片定制坐标轴标签
- 查到一个好用的汉字转拼音封装类
- NSXMLParser
- webstorm快捷键
- Cocos2dX 动作结束回调应用
- Linux下修改新建用户权限
- 自助终端机上a标签的兼容性
- leetcode28
- phpStorm 配置关联php手册
- Windows下Mongodb启动
- Unity添加自定义拓展方法ExternMethod