diff --git a/.swift-version b/.swift-version new file mode 100644 index 0000000..9f55b2c --- /dev/null +++ b/.swift-version @@ -0,0 +1 @@ +3.0 diff --git a/.travis.yml b/.travis.yml index 49710f6..274bad0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -3,12 +3,12 @@ # * https://github.com/supermarin/xcpretty#usage language: objective-c -osx_image: xcode7.3 +osx_image: xcode8 # cache: cocoapods # podfile: Example/Podfile -# before_install: -# - gem install cocoapods # Since Travis is not always on latest version +before_install: +- gem install cocoapods # Since Travis is not always on latest version # - pod install --project-directory=Example script: -- set -o pipefail && xcodebuild test -project XMLPullitic/XMLPullitic.xcodeproj -scheme XMLPullitic_iOS -destination 'platform=iOS Simulator,name=iPhone 5s' ONLY_ACTIVE_ARCH=NO | xcpretty +- set -o pipefail && xcodebuild test -project XMLPullitic/XMLPullitic.xcodeproj -scheme XMLPullitic_iOS -destination 'platform=iOS Simulator,name=iPhone 7' ONLY_ACTIVE_ARCH=NO | xcpretty - pod lib lint --allow-warnings diff --git a/README.md b/README.md index 48e31af..ba9ef31 100644 --- a/README.md +++ b/README.md @@ -16,15 +16,15 @@ if let parser = XMLPullParser(string: xml) { do { parsing: while true { switch try parser.next() { - case .StartDocument: + case .startDocument: print("start document") - case .StartElement(let name, _, _): + case .startElement(let name, _, _): print("start element: \(name)") - case .Characters(let text): + case .characters(let text): print("text: \(text)") - case .EndElement(let name, _): + case .endElement(let name, _): print("end element: \(name)") - case .EndDocument: + case .endDocument: print("end document") break parsing } @@ -39,19 +39,19 @@ Thanks to swift's pattern matching feature, you can easily handle start of eleme ```swift let event = try parser.next() switch event { -case .StartElement("foo", _, _): +case .startElement("foo", _, _): // handle start of print("foo: \(event)") -case .StartElement("bar", _, _): +case .startElement("bar", _, _): // handle start of print("bar: \(event)") -case .StartElement("baz", "http://example.com/ns/1.0"?, let element): +case .startElement("baz", "http://example.com/ns/1.0"?, let element): // handle start of , whose namespace URI is http://example.com/ns/1.0 // note: you must set parser.shouldProcessNamespaces true to handle namespaces // you can get attributes from XmlElement object print(element.attributes["xyz"]) -case .StartElement(_, _, _): +case .startElement(_, _, _): // handle start of other elements print("other: \(event)") default: @@ -62,6 +62,7 @@ default: ## Requirements - iOS 8.0+ +- Swift 3.0+ ## Installation diff --git a/Sources/XMLElement.swift b/Sources/XMLElement.swift index 5af910a..25eb18a 100644 --- a/Sources/XMLElement.swift +++ b/Sources/XMLElement.swift @@ -1,5 +1,5 @@ // -// XMLTag.swift +// XMLElement.swift // XMLPullitic // // Copyright (c) 2016 Hironori Ichimiya diff --git a/Sources/XMLEvent.swift b/Sources/XMLEvent.swift index 7827448..2bc8bfd 100644 --- a/Sources/XMLEvent.swift +++ b/Sources/XMLEvent.swift @@ -27,13 +27,13 @@ import Foundation public enum XMLEvent { - case StartDocument + case startDocument - case StartElement(name: String, namespaceURI: String?, element: XMLElement) + case startElement(name: String, namespaceURI: String?, element: XMLElement) - case Characters(String) + case characters(String) - case EndElement(name: String, namespaceURI: String?) + case endElement(name: String, namespaceURI: String?) - case EndDocument + case endDocument } diff --git a/Sources/XMLPullParser.swift b/Sources/XMLPullParser.swift index 7ceb4fc..032738a 100644 --- a/Sources/XMLPullParser.swift +++ b/Sources/XMLPullParser.swift @@ -28,25 +28,25 @@ import Foundation public class XMLPullParser { private var internalParser: InternalXMLParser - public convenience init?(contentsOfURL url: NSURL) { - guard let parser = NSXMLParser(contentsOfURL:url) else { return nil } + public convenience init?(contentsOfURL url: URL) { + guard let parser = XMLParser(contentsOf:url) else { return nil } self.init(xmlParser: parser) } - public convenience init(data: NSData) { - self.init(xmlParser: NSXMLParser(data: data)) + public convenience init(data: Data) { + self.init(xmlParser: XMLParser(data: data)) } - public convenience init(stream: NSInputStream) { - self.init(xmlParser: NSXMLParser(stream: stream)) + public convenience init(stream: InputStream) { + self.init(xmlParser: XMLParser(stream: stream)) } public convenience init?(string: String) { - guard let data = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding) else { return nil } + guard let data = (string as NSString).data(using: String.Encoding.utf8.rawValue) else { return nil } self.init(data: data) } - init(xmlParser: NSXMLParser) { + init(xmlParser: XMLParser) { self.internalParser = InternalXMLParser(xmlParser: xmlParser) } @@ -92,25 +92,25 @@ public class XMLPullParser { // MARK: - -@objc private class InternalXMLParser: NSObject, NSXMLParserDelegate { +@objc private class InternalXMLParser: NSObject, XMLParserDelegate { class LockCondition { static let Requested: Int = 0 static let Provided: Int = 1 } enum State { - case NotStarted - case Parsing - case Aborted - case Ended + case notStarted + case parsing + case aborted + case ended } enum EventOrError { - case Event(XMLEvent) - case Error(ErrorType) + case event(XMLEvent) + case error(Error) } - let xmlParser: NSXMLParser + let xmlParser: XMLParser let lock: NSConditionLock var currentEventOrError: EventOrError var state: State @@ -119,85 +119,85 @@ public class XMLPullParser { // MARK: methods called on original thread - init(xmlParser: NSXMLParser) { + init(xmlParser: XMLParser) { self.xmlParser = xmlParser self.lock = NSConditionLock(condition: LockCondition.Requested) - self.currentEventOrError = EventOrError.Event(XMLEvent.StartDocument) - self.state = .NotStarted + self.currentEventOrError = EventOrError.event(XMLEvent.startDocument) + self.state = .notStarted self.depth = 0 super.init() } func abortParsing() { - guard state == .Parsing else { return } + guard state == .parsing else { return } - state = .Aborted + state = .aborted // awake wating parser - lock.unlockWithCondition(LockCondition.Requested) + lock.unlock(withCondition: LockCondition.Requested) } func requestEvent() throws -> XMLEvent { switch state { - case .NotStarted: - state = .Parsing + case .notStarted: + state = .parsing xmlParser.delegate = self - dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)) { - self.lock.lockWhenCondition(LockCondition.Requested) + DispatchQueue.global(qos: .default).async { + self.lock.lock(whenCondition: LockCondition.Requested) self.xmlParser.parse() } - case .Parsing: - lock.unlockWithCondition(LockCondition.Requested) + case .parsing: + lock.unlock(withCondition: LockCondition.Requested) - case .Aborted: - return XMLEvent.EndDocument + case .aborted: + return XMLEvent.endDocument - case .Ended: - return XMLEvent.EndDocument + case .ended: + return XMLEvent.endDocument } - lock.lockWhenCondition(LockCondition.Provided) + lock.lock(whenCondition: LockCondition.Provided) switch currentEventOrError { - case .Error(let error): - state = .Ended + case .error(let error): + state = .ended lock.unlock() throw error - case .Event(XMLEvent.EndDocument): - state = .Ended + case .event(XMLEvent.endDocument): + state = .ended lock.unlock() - return XMLEvent.EndDocument - case .Event(let event): + return XMLEvent.endDocument + case .event(let event): return event } } // MARK: methods called on background thread - func provide(eventOrError: EventOrError) { + func provide(_ eventOrError: EventOrError) { if let chars = accumulatedChars { accumulatedChars = nil - provide(.Event(.Characters(chars))) + provide(.event(.characters(chars))) waitForNextRequest() } - if (state == .Parsing) { + if (state == .parsing) { currentEventOrError = eventOrError - lock.unlockWithCondition(LockCondition.Provided) + lock.unlock(withCondition: LockCondition.Provided) } } func waitForNextRequest() { - guard state == .Parsing else { - if (state == .Aborted && xmlParser.delegate != nil) { + guard state == .parsing else { + if (state == .aborted && xmlParser.delegate != nil) { xmlParser.delegate = nil xmlParser.abortParsing() } return } - lock.lockWhenCondition(LockCondition.Requested) - if (state == .Aborted) { + lock.lock(whenCondition: LockCondition.Requested) + if (state == .aborted) { xmlParser.delegate = nil xmlParser.abortParsing() lock.unlock() @@ -208,38 +208,38 @@ public class XMLPullParser { accumulatedChars = (accumulatedChars ?? "") + chars } - @objc func parserDidStartDocument(parser: NSXMLParser) { - provide(.Event(.StartDocument)) + @objc func parserDidStartDocument(_ parser: XMLParser) { + provide(.event(.startDocument)) waitForNextRequest() } - @objc func parser(parser: NSXMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { + @objc func parser(_ parser: XMLParser, didStartElement elementName: String, namespaceURI: String?, qualifiedName qName: String?, attributes attributeDict: [String : String]) { depth += 1 let element = XMLElement(name: elementName, namespaceURI: namespaceURI, qualifiedName: qName, attributes: attributeDict) - provide(.Event(.StartElement(name: elementName, namespaceURI: namespaceURI, element: element))) + provide(.event(.startElement(name: elementName, namespaceURI: namespaceURI, element: element))) waitForNextRequest() } - @objc func parser(parser: NSXMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { - provide(.Event(.EndElement(name: elementName, namespaceURI: namespaceURI))) + @objc func parser(_ parser: XMLParser, didEndElement elementName: String, namespaceURI: String?, qualifiedName qName: String?) { + provide(.event(.endElement(name: elementName, namespaceURI: namespaceURI))) waitForNextRequest() depth -= 1 } - @objc func parser(parser: NSXMLParser, foundCharacters string: String) { + @objc func parser(_ parser: XMLParser, foundCharacters string: String) { accumulate(characters: string) } - @objc func parserDidEndDocument(parser: NSXMLParser) { - provide(.Event(.EndDocument)) + @objc func parserDidEndDocument(_ parser: XMLParser) { + provide(.event(.endDocument)) } - @objc func parser(parser: NSXMLParser, parseErrorOccurred parseError: NSError) { - provide(.Error(XMLPullParserError.ParseError(innerError: parseError))) + @objc func parser(_ parser: XMLParser, parseErrorOccurred parseError: Error) { + provide(.error(XMLPullParserError.parseError(innerError: parseError))) } - @objc func parser(parser: NSXMLParser, foundCDATA CDATABlock: NSData) { - if let text = NSString(data: CDATABlock, encoding: NSUTF8StringEncoding) { + @objc func parser(_ parser: XMLParser, foundCDATA CDATABlock: Data) { + if let text = NSString(data: CDATABlock, encoding: String.Encoding.utf8.rawValue) { accumulate(characters: text as String) } } diff --git a/Sources/XMLPullParserError.swift b/Sources/XMLPullParserError.swift index c62d82f..2cf432c 100644 --- a/Sources/XMLPullParserError.swift +++ b/Sources/XMLPullParserError.swift @@ -25,6 +25,6 @@ import Foundation -public enum XMLPullParserError: ErrorType { - case ParseError(innerError: NSError) +public enum XMLPullParserError: Error { + case parseError(innerError: Error) } diff --git a/XMLPullitic.podspec b/XMLPullitic.podspec index ef9ad88..96fbaa6 100644 --- a/XMLPullitic.podspec +++ b/XMLPullitic.podspec @@ -8,7 +8,7 @@ Pod::Spec.new do |s| s.name = "XMLPullitic" - s.version = "0.2.2" + s.version = "0.3.0" s.summary = "Swifty XML pull parser" s.description = <<-DESC diff --git a/XMLPullitic/XMLPullitic.xcodeproj/project.pbxproj b/XMLPullitic/XMLPullitic.xcodeproj/project.pbxproj index db4cb8e..2abf685 100644 --- a/XMLPullitic/XMLPullitic.xcodeproj/project.pbxproj +++ b/XMLPullitic/XMLPullitic.xcodeproj/project.pbxproj @@ -167,14 +167,16 @@ isa = PBXProject; attributes = { LastSwiftUpdateCheck = 0730; - LastUpgradeCheck = 0730; + LastUpgradeCheck = 0800; ORGANIZATIONNAME = hironytic; TargetAttributes = { 50285CCB1CD2C897008477E1 = { CreatedOnToolsVersion = 7.3; + LastSwiftMigration = 0800; }; 50285CD51CD2C897008477E1 = { CreatedOnToolsVersion = 7.3; + LastSwiftMigration = 0800; }; }; }; @@ -259,8 +261,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -308,8 +312,10 @@ CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_EMPTY_BODY = YES; CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_INT_CONVERSION = YES; CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_SUSPICIOUS_MOVE = YES; CLANG_WARN_UNREACHABLE_CODE = YES; CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; @@ -329,6 +335,7 @@ IPHONEOS_DEPLOYMENT_TARGET = 8.0; MTL_ENABLE_DEBUG_INFO = NO; SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; TARGETED_DEVICE_FAMILY = "1,2"; VALIDATE_PRODUCT = YES; VERSIONING_SYSTEM = "apple-generic"; @@ -340,6 +347,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -351,6 +359,7 @@ PRODUCT_NAME = XMLPullitic; SKIP_INSTALL = YES; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -358,6 +367,7 @@ isa = XCBuildConfiguration; buildSettings = { CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; DEFINES_MODULE = YES; DYLIB_COMPATIBILITY_VERSION = 1; DYLIB_CURRENT_VERSION = 1; @@ -368,6 +378,7 @@ PRODUCT_BUNDLE_IDENTIFIER = com.hironytic.XMLPullitic; PRODUCT_NAME = XMLPullitic; SKIP_INSTALL = YES; + SWIFT_VERSION = 3.0; }; name = Release; }; @@ -378,6 +389,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.hironytic.XMLPulliticTests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Debug; }; @@ -388,6 +400,7 @@ LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.hironytic.XMLPulliticTests; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 3.0; }; name = Release; }; diff --git a/XMLPullitic/XMLPullitic.xcodeproj/xcshareddata/xcschemes/XMLPullitic_iOS.xcscheme b/XMLPullitic/XMLPullitic.xcodeproj/xcshareddata/xcschemes/XMLPullitic_iOS.xcscheme index dc667a9..5ab0925 100644 --- a/XMLPullitic/XMLPullitic.xcodeproj/xcshareddata/xcschemes/XMLPullitic_iOS.xcscheme +++ b/XMLPullitic/XMLPullitic.xcodeproj/xcshareddata/xcschemes/XMLPullitic_iOS.xcscheme @@ -1,6 +1,6 @@ CFBundlePackageType FMWK CFBundleShortVersionString - 0.2.2 + 0.3.0 CFBundleSignature ???? CFBundleVersion diff --git a/XMLPullitic/XMLPulliticTests/XMLPulliticTests.swift b/XMLPullitic/XMLPulliticTests/XMLPulliticTests.swift index 8e0dc2f..7c73e8b 100644 --- a/XMLPullitic/XMLPulliticTests/XMLPulliticTests.swift +++ b/XMLPullitic/XMLPulliticTests/XMLPulliticTests.swift @@ -46,7 +46,7 @@ class XMLPulliticTests: XCTestCase { do { let event1 = try parser.next() switch event1 { - case .StartDocument: + case .startDocument: break default: XCTFail("event1 should be .StartDocument") @@ -54,7 +54,7 @@ class XMLPulliticTests: XCTestCase { let event2 = try parser.next() switch event2 { - case .StartElement(let name, let namespaceURI, let element): + case .startElement(let name, let namespaceURI, let element): XCTAssertEqual(name, "hoge") XCTAssertNil(namespaceURI) XCTAssertEqual(element.name, "hoge") @@ -69,7 +69,7 @@ class XMLPulliticTests: XCTestCase { let event3 = try parser.next() switch event3 { - case .Characters(let chars): + case .characters(let chars): XCTAssertEqual(chars, "foo") default: XCTFail("event3 should be .Characters") @@ -77,7 +77,7 @@ class XMLPulliticTests: XCTestCase { let event4 = try parser.next() switch event4 { - case .EndElement(let name, let namespaceURI): + case .endElement(let name, let namespaceURI): XCTAssertEqual(name, "hoge") XCTAssertNil(namespaceURI) default: @@ -86,7 +86,7 @@ class XMLPulliticTests: XCTestCase { let event5 = try parser.next() switch event5 { - case .EndDocument: + case .endDocument: break default: XCTFail("event5 should be .EndDocument") @@ -108,14 +108,14 @@ class XMLPulliticTests: XCTestCase { parser.shouldProcessNamespaces = true do { switch try parser.next() { - case .StartDocument: + case .startDocument: break default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement(let name, let namespaceURI, let element): + case .startElement(let name, let namespaceURI, let element): XCTAssertEqual(name, "document") XCTAssertEqual(namespaceURI, "http://schemas.openxmlformats.org/wordprocessingml/2006/main") XCTAssertEqual(element.name, "document") @@ -128,7 +128,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .StartElement(let name, let namespaceURI, let element): + case .startElement(let name, let namespaceURI, let element): XCTAssertEqual(name, "rtl") XCTAssertEqual(namespaceURI, "http://schemas.openxmlformats.org/wordprocessingml/2006/main") XCTAssertEqual(element.name, "rtl") @@ -142,7 +142,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement(let name, let namespaceURI): + case .endElement(let name, let namespaceURI): XCTAssertEqual(name, "rtl") XCTAssertEqual(namespaceURI, "http://schemas.openxmlformats.org/wordprocessingml/2006/main") break @@ -151,7 +151,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement(let name, let namespaceURI): + case .endElement(let name, let namespaceURI): XCTAssertEqual(name, "document") XCTAssertEqual(namespaceURI, "http://schemas.openxmlformats.org/wordprocessingml/2006/main") break @@ -160,7 +160,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndDocument: + case .endDocument: break default: XCTFail("should be .EndDocument") @@ -182,14 +182,14 @@ class XMLPulliticTests: XCTestCase { parser.shouldProcessNamespaces = false do { switch try parser.next() { - case .StartDocument: + case .startDocument: break default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement(let name, let namespaceURI, let element): + case .startElement(let name, let namespaceURI, let element): XCTAssertEqual(name, "w:document") XCTAssertNil(namespaceURI) XCTAssertEqual(element.name, "w:document") @@ -203,7 +203,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .StartElement(let name, let namespaceURI, let element): + case .startElement(let name, let namespaceURI, let element): XCTAssertEqual(name, "w:rtl") XCTAssertNil(namespaceURI) XCTAssertEqual(element.name, "w:rtl") @@ -217,7 +217,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement(let name, let namespaceURI): + case .endElement(let name, let namespaceURI): XCTAssertEqual(name, "w:rtl") XCTAssertNil(namespaceURI) break @@ -226,7 +226,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement(let name, let namespaceURI): + case .endElement(let name, let namespaceURI): XCTAssertEqual(name, "w:document") XCTAssertNil(namespaceURI) break @@ -235,7 +235,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndDocument: + case .endDocument: break default: XCTFail("should be .EndDocument") @@ -247,14 +247,14 @@ class XMLPulliticTests: XCTestCase { } func testParseXMLData() { - let bundle = NSBundle(forClass: self.dynamicType) - let xmlFile = bundle.pathForResource("test1", ofType: "xml") - let data = NSData(contentsOfFile: xmlFile!) + let bundle = Bundle(for: type(of: self)) + let xmlFile = bundle.path(forResource: "test1", ofType: "xml") + let data = try? Data(contentsOf: URL(fileURLWithPath: xmlFile!)) let parser = XMLPullParser(data: data!) do { parsing: while true { switch try parser.next() { - case .EndDocument: + case .endDocument: break parsing default: break @@ -266,16 +266,16 @@ class XMLPulliticTests: XCTestCase { } func testParseXMLAtURL() { - let bundle = NSBundle(forClass: self.dynamicType) - let xmlFile = bundle.pathForResource("test1", ofType: "xml") - let xmlURL = NSURL(fileURLWithPath: xmlFile!) + let bundle = Bundle(for: type(of: self)) + let xmlFile = bundle.path(forResource: "test1", ofType: "xml") + let xmlURL = URL(fileURLWithPath: xmlFile!) let parser = XMLPullParser(contentsOfURL: xmlURL) XCTAssertNotNil(parser) if let parser = parser { do { parsing: while true { switch try parser.next() { - case .EndDocument: + case .endDocument: break parsing default: break @@ -288,14 +288,14 @@ class XMLPulliticTests: XCTestCase { } func testParseXMLInStream() { - let bundle = NSBundle(forClass: self.dynamicType) - let xmlFile = bundle.pathForResource("test1", ofType: "xml") - let inputStream = NSInputStream(fileAtPath: xmlFile!) + let bundle = Bundle(for: type(of: self)) + let xmlFile = bundle.path(forResource: "test1", ofType: "xml") + let inputStream = InputStream(fileAtPath: xmlFile!) let parser = XMLPullParser(stream: inputStream!) do { parsing: while true { switch try parser.next() { - case .EndDocument: + case .endDocument: break parsing default: break @@ -314,14 +314,14 @@ class XMLPulliticTests: XCTestCase { do { parsing: while true { switch try parser.next() { - case .EndDocument: + case .endDocument: break parsing default: break } } XCTFail("parse error should be occured") - } catch XMLPullParserError.ParseError(_) { + } catch XMLPullParserError.parseError(_) { XCTAssertEqual(parser.lineNumber, 4) XCTAssertEqual(parser.columnNumber, 2) } catch { @@ -337,14 +337,14 @@ class XMLPulliticTests: XCTestCase { if let parser = parser { do { switch try parser.next() { - case .StartDocument: + case .startDocument: XCTAssertEqual(parser.depth, 0) default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement("foo", _, _): + case .startElement("foo", _, _): XCTAssertEqual(parser.depth, 1) break default: @@ -352,7 +352,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .StartElement("bar", _, _): + case .startElement("bar", _, _): XCTAssertEqual(parser.depth, 2) break default: @@ -360,7 +360,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .Characters(_): + case .characters(_): XCTAssertEqual(parser.depth, 2) break default: @@ -368,7 +368,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement("bar", _): + case .endElement("bar", _): XCTAssertEqual(parser.depth, 2) break default: @@ -376,7 +376,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndElement("foo", _): + case .endElement("foo", _): XCTAssertEqual(parser.depth, 1) break default: @@ -384,7 +384,7 @@ class XMLPulliticTests: XCTestCase { } switch try parser.next() { - case .EndDocument: + case .endDocument: XCTAssertEqual(parser.depth, 0) break default: @@ -403,21 +403,21 @@ class XMLPulliticTests: XCTestCase { if let parser = parser { do { switch try parser.next() { - case .StartDocument: + case .startDocument: break default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement("foo", _, _): + case .startElement("foo", _, _): break default: XCTFail("should be .StartElement(\"foo\", _, _)") } switch try parser.next() { - case .StartElement("bar", _, _): + case .startElement("bar", _, _): parser.abortParsing() default: XCTFail("should be .StartElement(\"bar\", _, _)") @@ -435,35 +435,35 @@ class XMLPulliticTests: XCTestCase { if let parser = parser { do { switch try parser.next() { - case .StartDocument: + case .startDocument: break default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement("foo", _, _): + case .startElement("foo", _, _): break default: XCTFail("should be .StartElement(\"foo\", _, _)") } switch try parser.next() { - case .Characters(let text): + case .characters(let text): XCTAssertEqual(text, "This is text in a element") default: XCTFail("should be .Characters") } switch try parser.next() { - case .EndElement("foo", _): + case .endElement("foo", _): break default: XCTFail("should be .EndElement(\"foo\", _, _)") } switch try parser.next() { - case .EndDocument: + case .endDocument: break default: XCTFail("should be .EndDocument") @@ -481,35 +481,35 @@ class XMLPulliticTests: XCTestCase { if let parser = parser { do { switch try parser.next() { - case .StartDocument: + case .startDocument: break default: XCTFail("should be .StartDocument") } switch try parser.next() { - case .StartElement("foo", _, _): + case .startElement("foo", _, _): break default: XCTFail("should be .StartElement(\"foo\", _, _)") } switch try parser.next() { - case .Characters(let text): + case .characters(let text): XCTAssertEqual(text, "This is text in a element") default: XCTFail("should be .Characters") } switch try parser.next() { - case .EndElement("foo", _): + case .endElement("foo", _): break default: XCTFail("should be .EndElement(\"foo\", _, _)") } switch try parser.next() { - case .EndDocument: + case .endDocument: break default: XCTFail("should be .EndDocument")