- Added Swift 6.0 support (via #283)
- The tests are now all using swift-testing
- Prior deprecations have been removed
- Added Windows support (via #273)
- Added
XMLValueDeserialization
which implements bothXMLElementDeserializable
andXMLAttributeDeserializable
. It makes it a lot easier and simpler to implement custom deserialization for types (e.g. Dates) - Renamed
XMLIndexerDeserializable
toXMLObjectDeserialization
. This is a more useful name and better indicates its purpose as compared to theXMLValueDeserialization
. - Changed all errors types so that they implement
LocalizedError
(previously, they implementedCustomStringConvertible
). This should help a lot with handling errors. - Internally, all files have been heavily reorganized - types are now in their own files.
- Rename main class from
SWXMLHash
toXMLHash
so that the module name doesn't conflict with the class name. There are a decent number of issues related to naming conflicts so hopefully this will avoid them. Fixes #242.
- Added official/full Swift 5.1 compatibility (via #216)
- Note that API compatibility hasn't changed... it is a major version upgrade to support new language features.
- Added Xcode 10.2, Swift 5.0 support (via #210)
- Added support for using String backed RawRepresentables in place of Strings for relevant APIs (via #204)
- Fix cast warning with Swift 4.2 on Linux (via #201)
- Add
swift_version
toSWXMLHash.podspec
(via #198)
- Bump
WATCHOS_DEPLOYMENT_TARGET
to3.0
(via #193)
- Bump
SWIFT_VERSION
to4.0
(via #191)
- Swift 4.1 deprecation warnings silenced (via #181)
- Fix issue with
filter
and deserialization (via #177)
- Fix
XMLIndexer.byKey(_:)
bug (fixed in #165)
- Xcode 9 related compatibility fixes (via #152)
- Disable code coverage related to Carthage.
- Added new config option to allow for overriding the string encoding (via #119)
- Added recommended Xcode 9.3 project settings (via #144)
- Added
caseInsensitive
lookup options (via #137)
- Changed all enums to be camel cased (e.g. thisValue versus ThisValue) to match the Swift naming recommendations
- Removed
Sequence
fromXMLIndexer
to avoid a conflict with theelement
property coming in Swift 4- As a result,
for-in
no longer works directly againstXMLIndexer
; however,for-in
works just fine against the.all
method
- As a result,
- Changed
.text
to no longer be optional
- Added
recursiveText
property which pulls the text property from the currently indexed element and all child elements. (see PR #131)
- Fixed issues related to crashes with Swift 3.1 and Linux. (see PR #130)
- Fixed compilation issue related to upcoming release of Xcode 8.3.
- Added support for app extensions.
- Correct the CocoaPod support so that it still allows for iOS 8 and OSX 10.9.
- Official support for Xcode 8.0 and Swift 3.0
- See corresponding PR #78
XMLIndexer.Error
was renamed toIndexingError
because of a naming conflict with the built-inError
type.- Linux support is partially available and there is a Travis CI build for it as
well.
- Currently failing functionality is because of https://bugs.swift.org/browse/SR-2301.
- (3.0.1 because I was having trouble publishing the CocoaPod...)
- Support Swift 2.3 on Xcode 8
- See corresponding PR #95
- Added attribute deserialization support (via
value(ofAttribute:)
).
- Changed from using Quick/Nimble to XCTest (no version bump - only testing changes)
- Fixed issue with lazy loading and serialization support
- See issue #79.
- Fixed issue with Swift Package Manager
- See PR #72.
- Added built-in bool support for deserialization.
- See corresponding issue #70 and pull request #71.
- Added deserialization / type transformer support.
- See corresponding issue #10 and pull request #68.
- Changed how text elements are parsed - instead of string concatenation,
they're now added as first class
TextElement
instances.- This fixes the problem with mixed text/XML in issue 33.
- Add explicit
watchOS
andtvOS
targets to the project for better Carthage support
- Added support for Carthage builds with bitcode
- Bumped to
xcode7.1
usage of Quick and Nimble
- Added
tvOS
deployment target for CocoaPods and tvOS support
- Added
watchos
deployment target for CocoaPods and watchOS support
- Added Swift 2.0 / Xcode 7.0 support
- While API parity should exist between v1 and v2, the library attempts to
support the new error handling support in Swift 2.0 when you call the
byIndex
/byKey
methods respectively (the subscript methods don't currently support throwing exceptions). - Note that the existing subscript methods can still be used, though.
- While API parity should exist between v1 and v2, the library attempts to
support the new error handling support in Swift 2.0 when you call the
- Changed
.Error
to.XMLError
- this is part of handling Swift 2.0's new error handling support.- The prior
.Error
case received anNSError
type whereas the new.XMLError
case receives anError
which is anErrorType
with various cases to show which part of the parsing threw an error (i.e.Attribute
,AttributeValue
,Key
,Index
, orInit
).
- The prior
- Changed code signing options on the project to not code sign for OSX and to target iOS Developer.
- Add
configure
method off ofSWXMLHash
to allow for setting variable number of options.- At this time, the only options are
shouldProcessLazily
andshouldProcessNamespaces
. shouldProcessLazily
provides the same parsing as directly callinglazy
. I'm considering deprecating the top-levellazy
method in favor of having it be set inconfigure
, but I'm open to suggestions here (as well as to suggestions regarding theconfigure
method in general).shouldProcessNamespaces
provides the functionality requested in issue #30.
- At this time, the only options are
- Quick/Nimble are no longer used via git submodules, but are instead being pulled in via Carthage.
- Lazy loading support is available
(issue #11)
- Call
.lazy
instead of.parse
- Performance can be drastically improved when doing lazy parsing.
- Call
- See PR #26 for details on
these:
- Remove automatic whitespace trimming - that will be a responsibility of the caller.
- Make umbrella header public.
- Introduce shared schemes.
- Xcode 6.3 and Swift 1.2 support.
- Published version 1.0.0 CocoaPod.
- Fixed bug with interleaved XML (issue #19)
- Published version 0.6.4 CocoaPod.
- Fixed bug where mixed content wasn't supported (i.e. elements with both text and child elements).
- Published version 0.6.3 CocoaPod.
- Published version 0.6.2 CocoaPod. (yes, it should have gone with 0.6.1 but I tagged it too early)
- Fixed bug with
children
so that XML element order is preserved when enumerating XML child elements. - Only require Foundation.h instead of UIKit.h.
- Added
children
property to allow for enumerating all child elements. - CocoaPods support is live (see current docset on CocoaPods)
- Added OSX target, should allow SWXMLHash to work in OSX as well as iOS.
- Added the
withAttr
method to allow for lookup by an attribute and its value. See README or specs for details.
- XCode 6.1 is out on the app store now and I had to make a minor tweak to get the code to compile.
- Fix handling of whitespace in XML which resolves issue #6.
- Apparently the
foundCharacters
method ofNSXMLParser
also gets called for whitespace between elements. - There are now specs to account for this issue as well as a spec to document CDATA usage, too.
- Apparently the
- XCode 6.1 compatibility - added explicit unwrapping of
NSXMLParser
. - Updated to latest Quick, Nimble for 6.1 compilation.
- Added specs to try to help with issue #6.
- Made
XMLIndexer
implement theSequenceType
protocol to allow for for-in usage over it. Theall
method still exists as an option, but isn't necessary for simply iterating over sequences. - Formally introduced the change log!
- XCode 6 beta 6 compatibility.
- Fixed bugs related to the
all
method when only one element existed.
- Refactored to make the
parse
method class-level instead of instance-level.
- Moved all types into one file for ease of distribution for now.
- XCode 6 beta 4 compatibility.
- Heavy refactoring to introduce enum-based code (based on SwiftyJSON).
- The public
parse
method now takes a string in addition toNSData
. - Initial attribute support added.
- Initial release.
- This version is an early iteration to get the general idea down, but isn't really ready to be used.