前言
xml解析百度很多都是OC,我们来干一波Swift吧,群里大佬比较多,语法不会的问大佬,编译器不会的问大佬,炒股的问大佬…Q裙:730772561
大佬太多,不慌。
今日提示:知耻下问,后发先至。
一、XMLParser的了解
对于接触过IOS解析XML的应该很多吧…我是写Android的我司项目会涉及到很多xml解析导出给CAD然后CAD解析完成之后进行绘制编辑等。原生Android有很多对于XML的解析方式[
SAX
,Pull
,DOM
等],Flutter的对于XML解析很少了之前就见过XML这个库。
- 在使用最原始的XMLParser之前,我百度看过其他人封装的解析器,在分离方面显的很麻烦。对于类的构建要求比较高,如果涉及到上千节点的的xml那就太过于麻烦。我们先来最原始基本的,说不定是最舒服的方式。在
Swift里面XMLParser
为我们开发提供了便利
,如下我们看看源码也就三个初始化构造函数init(..)
,一个开始解析的方法parse()
,一个解析器委托delegate
,其实最主要的就是解析器委托了,所有解析的过程都交付委托给解析器委托delegate工具了。
open class XMLParser : NSObject {
//url初始化也可以
public convenience init?(contentsOf url: URL)
//根据文件字节bytes data初始化也可以
public init(data: Data)
//stream初始化也可以
@available(iOS 5.0, *)
public convenience init(stream: InputStream)
//XML解析器委托
unowned(unsafe) open var delegate: XMLParserDelegate?
open var shouldProcessNamespaces: Bool
open var shouldReportNamespacePrefixes: Bool
@available(iOS 8.0, *)
open var externalEntityResolvingPolicy: XMLParser.ExternalEntityResolvingPolicy
@available(iOS 8.0, *)
open var allowedExternalEntityURLs: Set<URL>?
open func parse() -> Bool
open func abortParsing()
open var parserError: Error? { get }
open var shouldResolveExternalEntities: Bool
}
二、新建xml文件且导入项目
1.新建.xml文件然后写入你想解析的节点或者已有的及其复杂的.xml文件。我的如下(粘贴的):
<?xml version="1.0" encoding="utf-8"?>
<Users>
<User id="101">
<name>航歌</name>
<tel>
<mobile>1234567</mobile>
<home>025-8100000</home>
</tel>
</User>
<User id="102">
<name>hang