Legend:
- feat: A new feature
- fix: A bug fix
- docs: Documentation only changes
- style: White-space, formatting, missing semi-colons, etc
- refactor: A code change that neither fixes a bug nor adds a feature
- perf: A code change that improves performance
- test: Adding missing tests
- chore: Changes to the build process or auxiliary tools/libraries/documentation
- #9: Deserialization erroneously was successful in some cases where error is expected. This broke deserialization of untagged enums which rely on error if variant cannot be parsed
- #8: Changes in the error type
DeError
:Variant Change DeError::Text
Removed because never raised DeError::InvalidEnum
Removed because never raised DeError::Xml
Renamed to DeError::InvalidXml
for consistency withDeError::InvalidBoolean
DeError::Int
Renamed to DeError::InvalidInt
for consistency withDeError::InvalidBoolean
DeError::Float
Renamed to DeError::InvalidFloat
for consistency withDeError::InvalidBoolean
DeError::Start
Renamed to DeError::UnexpectedStart
and tag name added to an errorDeError::End
Renamed to DeError::UnexpectedEnd
and tag name added to an errorDeEvent::Eof
Renamed to DeError::UnexpectedEof
DeError::EndOfAttributes
Renamed to DeError::KeyNotFound
DeError::ExpectedStart
Added
- #9: Added tests for incorrect nested tags in input
- feat: add support for
i128
/u128
in attributes or text/CDATA content - test: add tests for malformed inputs for serde deserializer
- fix: allow to deserialize
unit
s from any data in attribute values and text nodes - refactor: unify errors when EOF encountered during serde deserialization
- test: ensure that after deserializing all XML was consumed
- feat: add
Deserializer::from_str
,Deserializer::from_slice
andDeserializer::from_reader
- refactor: deprecate
from_bytes
andDeserializer::from_borrowing_reader
because they are fully equivalent tofrom_slice
andDeserializer::new
- refactor: reduce number of unnecessary copies when deserialize numbers/booleans/identifiers from the attribute and element names and attribute values
- fix: allow to deserialize
unit
s from text and CDATA content.DeError::InvalidUnit
variant is removed, because after fix it is no longer used - fix:
ElementWriter
, introduced in #274 (0.23.0-alpha2) now available to end users - fix: allow lowercase
<!doctype >
definition (used in HTML 5) when parse document from&[u8]
- test: add tests for consistence behavior of buffered and borrowed readers
- fix: produce consistent error positions in buffered and borrowed readers
- feat:
Error::UnexpectedBang
now provide the byte found - refactor: unify code for buffered and borrowed readers
- fix: fix internal panic message when parse malformed XML (#344)
- test: add tests for trivial documents (empty / only comment /
<root>...</root>
-- one tag with content) - fix: CDATA was not handled in many cases where it should
- fix: do not unescape CDATA content because it never escaped by design.
CDATA event data now represented by its own
BytesCData
type (quick-xml#311) - feat: add
Reader::get_ref()
andReader::get_mut()
, renameReader::into_underlying_reader()
toReader::into_inner()
- refactor: now
Attributes::next()
returns a new typeAttrError
when attribute parsing failed (#4) - test: properly test all paths of attributes parsing (#4)
- feat: attribute iterator now implements
FusedIterator
(#4) - fix: fixed many errors in attribute parsing using iterator, returned from
attributes()
orhtml_attributes()
(#4)
- fix: use element name (with namespace) when unflattening (serialize feature)
- fix: failing tests with features
- style: convert to rust edition 2018
- fix: don't encode multi byte escape characters as big endian
- feat: add
Writer::write_nested_event
- feat: add
BytesStart::try_get_attribute
- test: add more test on github actions
- feat: allow unbuffered deserialization (!!)
- style: use edition 2018
- feat: add a function for partially escaping an element
- feat: higher level api to write xmls
- feat (breaking): Move html entity escape behind a
'escape-html'
feature to help with compilation - style: rustfmt
- feat: inline CData when pretty printing
- test: fix tests (Windows and Html5)
- feat (breaking): add
*_with_custom_entities
versions of all `unescape_*\ methods - test: more robust test for numeric entities
- refactor: add explicit pre-condition about custom_entities
- feat: Split text trim into start and end
- fix:
$value
rename should work the same for deserialization and serialization - docs: README.md: Replace dead benchmark link
- style: Cargo.toml: remove "readme" field
- fix: Parse & in cdata correctly
- style: Fix reader.rs typo
- feat: Accept html5 doctype
- fix: Unescape all existing HTML entities
- test: Add tests for indentation
- test: Add complete tests for serde deserialization
- feat: Use self-closed tags when serialize types without nested elements with serde
- feat: Add two new API to the
BytesStart
:to_borrowed()
andto_end()
- feat: Add ability to specify name of the root tag and indentation settings when serialize type with serde
- feat: Add support for serialization of
- unit enums variants
- newtype structs and enum variants
- unnamed tuples, tuple structs and enum variants
- fix: More consistent structs serialization
- fix: Deserialization of newtype structs
- fix:
unit
deserialization and newtype and struct deserialization in adjacently tagged enums
- docs: Add example for nested parsing
- fix:
buffer_position
not properly set sometimes - feat: Make escape module public apart from EscapeError
- feat: Nake Reader
Clone
able - feat: Enable writing manual indentation (and fix underflow on shrink)
- style: Forbid unsafe code
- fix: Use
write_all
instead ofwrite
- fix: (Serde) Serialize basic types as attributes (breaking change)
- test: Fix benchmarks on Windows and add trimmed variant
- feat: deserialize bytes
- feat: add
decode_without_bom
fns for BOM prefixed text fields - fix: decode then unescape instead of unescape and decode
- feat: add Seq to serializer
- docs: update readme with example for
$value
- feat: add new
serialize
feature to support serde serialize/deserialize
- perf: speed up (un)escape a little
- feat: remove failure completely (breaking change) and implement
std::error::Error
forError
- feat: improve
Debug
s forAttribute
,BytesStart
,BytesEnd
,BytesText
- refactor: remove derive_more dependency (used only in 2 structs)
- refactor: move xml-rs bench dependency into another local crate
- feat: (breaking change) set failure and encoding_rs crates as optional.
You should now use respectively
use-failure
andencoding
features to get the old behavior - perf: improve perf using memchr3 iterator. Reading is 18% better on benches
- feat: remove Seek bound
- style: rustfmt
- feat: make failure error crate optional. To revert back to old behavior, use the
--failure
feature.
- feat: allow changing name without deallocating
BytesStart
buffer - feat: add standard error type conversion
- fix: allow whitespace in End events
- feat: bump dependencies
- feat: Add into_underlying_reader method for
Reader<BufRead + Seek>
- feat: rename
resolve_namespace
intoattribute_namespace
- feat: add a
event_namespace
fn
- fix: Fix minor bug for parsing comment tag
- feat: add
BytesStart::{owned_name, borrowed_name}
- refactor: bump dependencies
- test: fix travis
- feat: enable
into_owned
for all events
- feat: rename BytesText fn to better clarify escape intents
- docs: various improvements!
- feat: migrate from error-chain to failure
- feat: allow html style attribute iterators
- feat: add optional identation on writer
- refactor: remove unecessary derive impl
- fix: overflow possibility when parsing Ascii codes
- feat: update dependencies
- doc: add doc for attribute creation functions
- fix: escape attributes
- fix: avoid double escapes
- fix: bound tests in
read_bang
fn.
- fix: escape was panicking at the 3rd character escaped.
- perf: update to encoding_rs 0.7.0, supposedly faster for utf8
- style: rustfmt-nightly
- perf: use memchr crate and rewrite some loops with iterators
- docs: remove duplicate
Reader
doc in lib.rs
- feat: add getter for encoding to reader
- feat: escape Text events on write (breaking change)
- feat: allow
Writer
to borrowEvent
(usingAsRef<Event>
)
- fix: make the reader borrow the namespace buffer so it can be used repetitively
- refactor: bump dependencies
- fix: fix Event::Text slice always starting at the beginning of the buffer
- perf: faster unescape method
- docs: update readme
- refactor bump encoding_rs to 0.6.6
- style: rustfmt
- refactor: remove from_ascii crate dependency
- style: rustfmt
- fix: {with,extend}_attributes usage
- feat: add naive
local_name
function
- fix: another overflow bug found with cargo-fuzz
- refactor: update dependencies
- fix: fix an overflow found with cargo-fuzz
Major refactoring. Breaks most of existing functionalities
- refactor: replace
XmlReader
with a non allocatingReader
(uses an external buffer) - refactor: replace
XmlnsReader
iterator by a simplerReader::read_namespaced_event
function - refactor: replace
UnescapedAttribute
with a newAttribute
struct withunescape
functions - feat: support xml decodings
- refactor: remove the
AsStr
trait: user must useunescape_and_decode
fns when necessary (alternatively, rununescape
and/orReader::decode
) - refactor: module hierarchies
- refactor: replace
Element
s with several per event structsBytesStart
- perf: unescape: use from-ascii crate instead to get ascii codes without string validation
- refactor: rename
XmlWriter
toWriter
and provide a way to write&[u8]
directly - refactor: adds @vandenoever changes to save some namespaces allocations
- refactor: adds error-chain and remove
ResultPos
(user can still useReader::buffer_position
if needed)
- feat: apply default namespaces (
xmlns="..."
) to unqualified elements - fix: scope for namespace resolution on empty elements
- fix: parsing of
>
in attribute values
- feat: add
into_unescaped_string
- refactor: remove RustyXML benches
- docs: redirect to docs.rs for documentation
- docs: add examples in lib.rs
- feat: add
read_text_unescaped
- fix: fix tests
- fix: fix attributes with
=
character in their value - perf: inline some local functions
- feat: set default to
expand_empty_elements = true
- fix: fix all broken tests because of
Empty
events
- feat: Add support for
Empty
event
- test: add most tests from xml-rs crate
- fix: do not write attributes on
Event::End
- refactor: code refactoring, split largest functions into smaller ones
- refactor: use
Range
instead ofusize
s inElement
definition - docs: fix typo
- feat: add
Clone
to more structs - style: apply rustfmt
- refactor: change
from_str
into implFrom<&str>
- feat: support
Event::DocType
- feat: add
.check_comments
to check for invalid double dashes (--
) in comments - fix: check that all attributes are distincts
- feat: return more precise index when erroring
- feat: have
Attributes
iterate ResultPos instead ofResult
- feat: provide functions to unescape
&...;
characters (.escaped_content
and.escaped_attributes
) - fix: have namespace resolution start one level higher
- feat: add
XmlnsReader
to iterate event and resolve namespaces! - docs: better documentation (in particular regarding
Element
structure and design) - test: add benchmarks, with xml-rs for a reference
- feat/fix: add
Event::PI
to manage processing instructions (<?...?>
) - test: add test with a sample file
- feat: parse
Event::Decl
for xml declaration so we can haveversion
,encoding
... - refactor: rename
position
intobuffer_position
because it sometimes conflicted withIterator::position
- test: add test for buffer_position
- feat: add buffer position when erroring to help debuging (return
ResultPos
instead ofResult
) - test: add travis CI
- docs: add merrit badge and travis status
- feat: improve Element API with new, with_attributes, push_attribute
- feat: always return raw
&[u8]
and add aAsStr
trait for conversion
- feat: add helper functions
- feat: add
XmlWriter
to write/modify xmls - feat: use
AsRef<[u8]>
when possible
- test: add tests
- feat: add
with_check