Releases: JuliaData/XML.jl
Release list
v0.4.1
New convenience API for element-only child iteration (#78, #80):
eachelement(node)— lazy iterator over the child elements of aNodeorLazyNode, skipping the whitespaceTextnodes that v0.4 preserves on pretty-printed documents (and every other non-element node).elements(node)— the collectedVectorcounterpart.
for el in eachelement(node)
# el is an Element node
endThe LazyNode method streams via eachchildnode, so no intermediate child vector is materialized. The migration guide now teaches this as the idiomatic element-only loop — the manual nodetype filter remains the form that also runs on 0.3.x.
Non-breaking addition: any environment with XML = "0.4" compat picks it up on update.
Full changelog: CHANGELOG.md
v0.4.0
Breaking release — ground-up rewrite of the internals: token-based parser, Cursor streaming (StAX-style) API, XPath subset, configurable well-formedness. Upgrading from 0.3.x? See the migration guide.
Added
Cursor— allocation-light forward streaming (next!,for_each_child,skip_element!).xpath(node, path)— an XPath 1.0 subset.wellformed = :lenient | :structural | :strictonparse/read(default:structural).XMLTokenizerstreaming tokenizer; AbstractTrees package extension.
Changed
Nodeis parametric (Node{S}), attributes areVector{Pair}behind anattributesaccessor.parse/readdecode entities (value()returns&, not&);writeauto-escapes.- Inter-element whitespace is preserved as
Textnodes; duplicate attributes error; malformed documents are rejected by default (:lenientrestores the permissive behavior). - Minimum Julia is 1.10. Substantially faster and leaner than 0.3.x — see PERFORMANCE-v0.4.md.
Removed
- The 0.3 streaming internals:
XML.Raw,next/prev, single-argumentparent/depth,nodes_equal,escape!/unescape!,DTDBody— replacements in the migration guide.
Full details: CHANGELOG.
v0.3.9
What's Changed
- Bump compat for OrderedCollections.jl, bump patch version for new release by @cgarling in #64
- escape should work with AbstractString. by @MarkNahabedian in #60
- CData -> CDATA by @KronosTheLate in #56
- feat: add
next!andprev!for in-place LazyNode traversal by @mathieu17g in #59 - Bump codecov/codecov-action from 1 to 7 by @dependabot[bot] in #67
- Bump actions/cache from 4 to 5 by @dependabot[bot] in #68
- Bump actions/checkout from 2 to 7 by @dependabot[bot] in #69
- Bump julia-actions/setup-julia from 2 to 3 by @dependabot[bot] in #66
- Prepare 0.3.9: changelog + regression tests (#56, #60) by @mathieu17g in #70
New Contributors
- @cgarling made their first contribution in #64
- @MarkNahabedian made their first contribution in #60
- @KronosTheLate made their first contribution in #56
- @mathieu17g made their first contribution in #59
- @dependabot[bot] made their first contribution in #67
Full Changelog: v0.3.8...v0.3.9
v0.3.8
XML v0.3.8
Merged pull requests:
v0.3.7
v0.3.6
XML v0.3.6
xml:space="preserve"is now respected
Merged pull requests:
Closed issues:
v0.3.5
v0.3.4
XML v0.3.4
Closed issues:
v0.3.3
XML v0.3.3
Merged pull requests:
- Fixed path definition error in README example (#20) (@Kevin-Mattheus-Moerman)
- update benchmarks and add h function (#23) (@joshday)
Closed issues: