Releases: tafia/quick-xml
Releases Β· tafia/quick-xml
v0.37.3 - support for `xsi:nil` in Deserializer
What's Changed
New Features
- #850: Add
Attribute::as_bool()
method to get an attribute value as a boolean. - #850: Add
Attributes::has_nil()
method to check if attributes hasxsi:nil
attribute set totrue
. - #497: Handle
xsi:nil
attribute in serde Deserializer to better process optional fields.
Full Changelog: v0.37.2...v0.37.3
v0.37.2 - se::to_utf8_io_writer()
What's Changed
New Features
- #836: Add
se::to_utf8_io_writer()
helper compatible withstd::io::Write
and restricted to UTF-8 encoding.
New Contributors
- @pronebird made their first contribution in #836
Full Changelog: v0.37.1...v0.37.2
v0.37.1 - Write CDATA safely
v0.37.0 - serde & errors imporvements
What's Changed
β οΈ Significant Changes
Those changes could require not trivial adoption of your code:
- The recognized boolean values in serde
Deserializer
are reduced. Use#[serde(deserialize_with)]
which will accept and parse strings if you need the old behavior. Serializer
no longer serialize consequent primitive values (those which would produce only text, without surrounding tags), because it is impossible to deserialize them back to the same value.- The crate's errors was changed, some variants was splitted to their own error types, some removed.
New Features
- #826: Implement
From<String>
andFrom<Cow<str>>
forquick_xml::de::Text
. - #826: Make
SimpleTypeDeserializer
andSimpleTypeSerializer
public. - #826: Implement
IntoDeserializer
for&mut Deserializer
.
Bug Fixes
- #655: Do not write indent before and after
$text
fields and those$value
fields that are serialized as a text (for example,usize
orString
). - #826: Handle only those boolean representations that are allowed by Xml Schema which is only
"true"
,"1"
,"false"
, and"0"
. Previously the following values also was accepted:bool
XML content true
"True"
,"TRUE"
,"t"
,"Yes"
,"YES"
,"yes"
,"y"
false
"False"
,"FALSE"
,"f"
,"No"
,"NO"
,"no"
,"n"
Misc Changes
- #227: Split
SeError
fromDeError
in theserialize
feature. Serialize functions and methods now returnSeError
. - #810: Return
std::io::Error
fromWriter
methods. - #811: Split
NamespaceError
andEncodingError
fromError
. - #811: Renamed
Error::EscapeError
toError::Escape
to match other variants. - #811: Narrow down error return type from
Error
where only one variant is ever returned: attribute related methods onBytesStart
andBytesDecl
returnsAttrError
. - #820: Classify output of the
Serializer
by returning an enumeration with kind of written data. - #823: Do not allow serialization of consequent primitives, for example
Vec<usize>
orVec<String>
in$value
fields. They cannot be deserialized back with the same result. - #827: Make
escape
and it variants take aimpl Into<Cow<str>>
argument and implementFrom<(&'a str, Cow<'a, str>)>
onAttribute
. - #826: Removed
DeError::InvalidInt
,DeError::InvalidFloat
andDeError::InvalidBoolean
. Now the responsibility for returning the error lies with the visitor of the type. See rationale in serde-rs/serde#2811
New Contributors
- @RedPhoenixQ made their first contribution in #810
Full Changelog: v0.36.2...v0.37.0
v0.36.2 - Fix DOCTYPE parsing
What's Changed
Bug Fixes
- #533: Fix incorrect DocType closing bracket detection when parsing with buffered reader
Full Changelog: v0.36.1...v0.36.2
v0.36.1 - Read binary from XML
What's Changed
New Features
- #623: Added
Reader::stream()
that can be used to read arbitrary data from the inner reader while track position for XML reader.
Full Changelog: v0.36.0...v0.36.1
v0.36.0 - Compatibility with Adobe Flash
What's Changed
Bug Fixes
- #781: Fix conditions to start CDATA section. Only uppercase
<![CDATA[
can start it.
Previously any case was allowed. - #780: Fixed incorrect
.error_position()
when encountering syntax error for open or self-closed tag.
Misc Changes
- #780:
reader::Parser
,reader::ElementParser
andreader::PiParser
moved to the new moduleparser
. - #776: Allow to have attributes in the end tag for compatibility reasons with Adobe Flash XML parser.
Full Changelog: v0.35.0...v0.36.0
v0.35.0 - a couple of bugfixes
What's Changed
New Features
- #772: Add
reader::Config::allow_unmatched_ends
to permit dangling end tags.
Bug Fixes
- #773: Fixed reporting incorrect end position in
Reader::read_to_end
family of methods and trimming of the trailing spaces inReader::read_text
whentrim_text_start
is set and the last event is not aText
event. - #771: Character references now allow any number of leading zeroes as it should. As a result, the following variants of
quick_xml::escape::EscapeError
are removed:TooLongDecimal
TooLongHexadecimal
- #771: Fixed
Attribute::unescape_value
which does not unescape predefined values since 0.32.0. - #774: Fixed regression since 0.33.0:
Text
event may be skipped inread_event_into()
andread_event_into_async()
in some circumstances.
Misc Changes
- #771:
EscapeError::UnrecognizedSymbol
renamed toEscapeError::UnrecognizedEntity
. - #771: Implemented
PartialEq
forEscapeError
. - #771: Replace the following variants of
EscapeError
byInvalidCharRef
variant with a newParseCharRefError
inside:EntityWithNull
InvalidDecimal
InvalidHexadecimal
InvalidCodepoint
New Contributors
- @torokati44 made their first contribution in #772
Full Changelog: v0.34.0...v0.35.0
v0.34.0 - allow to read 4GB+ files on 32-bit targets
What's Changed
Bug Fixes
- #751: Fix internal overflow when read 4GB+ files on 32-bit targets using
Reader<impl BufRead>
readers.
Misc Changes
- #760:
Attribute::decode_and_unescape_value
andAttribute::decode_and_unescape_value_with
now acceptsDecoder
instead ofReader
. UseReader::decoder()
to get it. - #760:
Writer::write_event
now consumes event. UseEvent::borrow()
if you want to keep ownership. - #751: Type of
Reader::error_position()
andReader::buffer_position()
changed fromusize
tou64
. - #751: Type alias
Span
changed fromRange<usize>
toRange<u64>
.
Full Changelog: v0.33.0...v0.34.0
v0.33.0 - Make compile time small again
What's Changed
New Features
- #758: Implemented
From<QName>
forBytesStart
andBytesEnd
.
Bug Fixes
- #755: Fix incorrect missing of trimming all-space text events when
trim_text_start = false
andtrim_text_end = true
.
Misc Changes
- #650: Change the type of
Event::PI
to a new dedicatedBytesPI
type. - #759: Make
const
as much functions as possible:resolve_html5_entity()
resolve_predefined_entity()
resolve_xml_entity()
Attr::key()
Attr::value()
Attributes::html()
Attributes::new()
BytesDecl::from_start()
Decoder::encoding()
Deserializer::get_ref()
IoReader::get_ref()
LocalName::into_inner()
Namespace::into_inner()
NsReader::config()
NsReader::prefixes()
Prefix::into_inner()
QName::into_inner()
Reader::buffer_position()
Reader::config()
Reader::decoder()
Reader::error_position()
Reader::get_ref()
SliceReader::get_ref()
Writer::get_ref()
Writer::new()
- #763: Hide
quick_xml::escape::resolve_html5_entity
underescape-html
feature again.
This function has significant influence to the compilation time (10+ seconds or 5x times)
Full Changelog: v0.32.0...v0.33.0