CHANGELOG.md
July 1, 2025 ยท View on GitHub
v8.1.1 (July 1, 2025)
- Fix memory leak related to parent property (via #286 which closes #285).
v8.1.0 (September 27, 2024)
v8.0.0 (September 17, 2024)
- Added Swift 6.0 support (via #283)
- The tests are now all using swift-testing
- Prior deprecations have been removed
v7.0.2 (May 9, 2023)
- Added Windows support (via #273)
v7.0.0 (May 6, 2022)
- Added
XMLValueDeserializationwhich implements bothXMLElementDeserializableandXMLAttributeDeserializable. It makes it a lot easier and simpler to implement custom deserialization for types (e.g. Dates) - Renamed
XMLIndexerDeserializabletoXMLObjectDeserialization. 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.
v6.0.0 (September 28, 2021)
- Rename main class from
SWXMLHashtoXMLHashso 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.
v5.0.2 (February 6, 2021)
v5.0.1 (September 2, 2019)
v5.0.0 (August 28, 2019)
- 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.
v4.9.0 (March 29, 2019)
- Added Xcode 10.2, Swift 5.0 support (via #210)
v4.8.0 (March 6, 2019)
- Added support for using String backed RawRepresentables in place of Strings for relevant APIs (via #204)
v4.7.6 (December 11, 2018)
v4.7.5 (November 26, 2018)
- Fix cast warning with Swift 4.2 on Linux (via #201)
v4.7.4 (October 15, 2018)
- Add
swift_versiontoSWXMLHash.podspec(via #198)
v4.7.2 (September 18, 2018)
- Bump
WATCHOS_DEPLOYMENT_TARGETto3.0(via #193)
v4.7.1 (August 4, 2018)
- Bump
SWIFT_VERSIONto4.0(via #191)
v4.7.0 (May 7, 2018)
v4.6.0 (March 10, 2018)
v4.5.1 (March 8, 2018)
- Swift 4.1 deprecation warnings silenced (via #181)
v4.5.0 (February 21, 2018)
v4.4.1 (February 5, 2018)
- Fix issue with
filterand deserialization (via #177)
v4.4.0 (February 4, 2018)
v4.3.6 (January 21, 2018)
v4.3.5 (January 15, 2018)
v4.2.5 (November 10, 2017)
- Fix
XMLIndexer.byKey(_:)bug (fixed in #165)
v4.2.4 (November 9, 2017)
v4.2.3 (September 21, 2017)
v4.2.2 (September 21, 2017)
- Xcode 9 related compatibility fixes (via #152)
v4.2.1 (September 12, 2017)
- Disable code coverage related to Carthage.
v4.2.0 (August 27, 2017)
- Added new config option to allow for overriding the string encoding (via #119)
v4.1.1 (June 1, 2017)
- Added recommended Xcode 9.3 project settings (via #144)
v4.1.0 (June 1, 2017)
- Added
caseInsensitivelookup options (via #137)
v4.0.0 (May 31, 2017)
- Changed all enums to be camel cased (e.g. thisValue versus ThisValue) to match the Swift naming recommendations
- Removed
SequencefromXMLIndexerto avoid a conflict with theelementproperty coming in Swift 4- As a result,
for-inno longer works directly againstXMLIndexer; however,for-inworks just fine against the.allmethod
- As a result,
- Changed
.textto no longer be optional
v3.1.0 (May 15, 2017)
- Added
recursiveTextproperty which pulls the text property from the currently indexed element and all child elements. (see PR #131)
v3.0.5 (May 12, 2017)
- Fixed issues related to crashes with Swift 3.1 and Linux. (see PR #130)
v3.0.4 (January 31, 2017)
- Fixed compilation issue related to upcoming release of Xcode 8.3.
v3.0.3 (November 18, 2016)
- Added support for app extensions.
v3.0.2 (September 13, 2016)
- Correct the CocoaPod support so that it still allows for iOS 8 and OSX 10.9.
v3.0.0 - 3.0.1 (September 13, 2016)
- Official support for Xcode 8.0 and Swift 3.0
- See corresponding PR #78
XMLIndexer.Errorwas renamed toIndexingErrorbecause of a naming conflict with the built-inErrortype.- 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...)
v2.5.1 (August 23, 2016)
- Support Swift 2.3 on Xcode 8
- See corresponding PR #95
v2.5.0 (August 8, 2016)
- Added attribute deserialization support (via
value(ofAttribute:)).
v2.4.0 (July 12, 2016)
- Changed from using Quick/Nimble to XCTest (no version bump - only testing changes)
v2.4.0 (July 11, 2016)
v2.3.2 (June 23, 2016)
- Fixed issue with lazy loading and serialization support
- See issue #79.
v2.3.1 (April 10, 2016)
- Fixed issue with Swift Package Manager
- See PR #72.
v2.3.0 (April 9, 2016)
- Added built-in bool support for deserialization.
- See corresponding issue #70 and pull request #71.
v2.2.0 (March 23, 2016)
- Added deserialization / type transformer support.
- See corresponding issue #10 and pull request #68.
v2.1.0 (January 27, 2016)
- Changed how text elements are parsed - instead of string concatenation,
they're now added as first class
TextElementinstances.- This fixes the problem with mixed text/XML in issue 33.
v2.0.4 (November 13, 2015)
- Add explicit
watchOSandtvOStargets to the project for better Carthage support
v2.0.3 (October 25, 2015)
- Added support for Carthage builds with bitcode
- Bumped to
xcode7.1usage of Quick and Nimble
v2.0.2 (October 21, 2015)
- Added
tvOSdeployment target for CocoaPods and tvOS support
v2.0.1 (September 22, 2015)
- Added
watchosdeployment target for CocoaPods and watchOS support
v2.0.0 (September 16, 2015)
- 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/byKeymethods 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
.Errorto.XMLError- this is part of handling Swift 2.0's new error handling support.- The prior
.Errorcase received anNSErrortype whereas the new.XMLErrorcase receives anErrorwhich is anErrorTypewith various cases to show which part of the parsing threw an error (i.e.Attribute,AttributeValue,Key,Index, orInit).
- The prior
v1.1.1 (August 3, 2015)
- Changed code signing options on the project to not code sign for OSX and to target iOS Developer.
v1.1.0 (June 20, 2015)
- Add
configuremethod off ofSWXMLHashto allow for setting variable number of options.- At this time, the only options are
shouldProcessLazilyandshouldProcessNamespaces. shouldProcessLazilyprovides the same parsing as directly callinglazy. I'm considering deprecating the top-levellazymethod in favor of having it be set inconfigure, but I'm open to suggestions here (as well as to suggestions regarding theconfiguremethod in general).shouldProcessNamespacesprovides the functionality requested in issue #30.
- At this time, the only options are
v1.0.1 (May 18, 2015)
- Quick/Nimble are no longer used via git submodules, but are instead being pulled in via Carthage.
v1.0.0 (April 10, 2015)
- Lazy loading support is available
(issue #11)
- Call
.lazyinstead 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.
v0.6.4 (February 26, 2015)
- Fixed bug with interleaved XML (issue #19)
- Published version 0.6.4 CocoaPod.
v0.6.3 (February 23, 2015)
- Fixed bug where mixed content wasn't supported (i.e. elements with both text and child elements).
- Published version 0.6.3 CocoaPod.
v0.6.2 (February 9, 2015)
- Published version 0.6.2 CocoaPod. (yes, it should have gone with 0.6.1 but I tagged it too early)
v0.6.1 (February 9, 2015)
- Fixed bug with
childrenso that XML element order is preserved when enumerating XML child elements. - Only require Foundation.h instead of UIKit.h.
v0.6.0 (January 30, 2015)
- Added
childrenproperty to allow for enumerating all child elements. - CocoaPods support is live (see current docset on CocoaPods)
v0.5.5 (January 25, 2015)
- Added OSX target, should allow SWXMLHash to work in OSX as well as iOS.
v0.5.4 (November 2, 2014)
- Added the
withAttrmethod to allow for lookup by an attribute and its value. See README or specs for details.
v0.5.3 (October 21, 2014)
- XCode 6.1 is out on the app store now and I had to make a minor tweak to get the code to compile.
v0.5.2 (October 6, 2014)
- Fix handling of whitespace in XML which resolves issue #6.
- Apparently the
foundCharactersmethod ofNSXMLParseralso 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
v0.5.1 (October 5, 2014)
- 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.
v0.5.0 (September 30, 2014)
- Made
XMLIndexerimplement theSequenceTypeprotocol to allow for for-in usage over it. Theallmethod still exists as an option, but isn't necessary for simply iterating over sequences. - Formally introduced the change log!
v0.4.2 (August 19, 2014)
- XCode 6 beta 6 compatibility.
v0.4.1 (August 11, 2014)
- Fixed bugs related to the
allmethod when only one element existed.
v0.4.0 (August 8, 2014)
- Refactored to make the
parsemethod class-level instead of instance-level.
v0.3.1 (August 7, 2014)
- Moved all types into one file for ease of distribution for now.
v0.3.0 (July 28, 2014)
- XCode 6 beta 4 compatibility.
v0.2.0 (July 14, 2014)
- Heavy refactoring to introduce enum-based code (based on SwiftyJSON).
- The public
parsemethod now takes a string in addition toNSData. - Initial attribute support added.
v0.1.0 (July 8, 2014)
- Initial release.
- This version is an early iteration to get the general idea down, but isn't really ready to be used.