xml::reader

Struct ParserConfig

Source
pub struct ParserConfig {
    pub trim_whitespace: bool,
    pub whitespace_to_characters: bool,
    pub cdata_to_characters: bool,
    pub ignore_comments: bool,
    pub coalesce_characters: bool,
    pub extra_entities: HashMap<String, String>,
    pub ignore_end_of_stream: bool,
    pub replace_unknown_entity_references: bool,
    pub ignore_root_level_whitespace: bool,
}
Expand description

Parser configuration structure. There are more config methods than public fileds — see methods below.

This structure contains various configuration options which affect behavior of the parser.

Fields§

§trim_whitespace: bool

Whether or not should whitespace in textual events be removed. Default is false.

When true, all standalone whitespace will be removed (this means no Whitespace events will be emitted), and leading and trailing whitespace from Character events will be deleted. If after trimming Characters event will be empty, it will also be omitted from output stream. This is possible, however, only if whitespace_to_characters or cdata_to_characters options are set.

This option does not affect CDATA events, unless cdata_to_characters option is also set. In that case CDATA content will also be trimmed.

§whitespace_to_characters: bool

Whether or not should whitespace be converted to characters. Default is false.

If true, instead of Whitespace events Characters events with the same content will be emitted. If trim_whitespace is also true, these events will be trimmed to nothing and, consequently, not emitted.

§cdata_to_characters: bool

Whether or not should CDATA be converted to characters. Default is false.

If true, instead of CData events Characters events with the same content will be emitted. If trim_whitespace is also true, these events will be trimmed. If corresponding CDATA contained nothing but whitespace, this event will be omitted from the stream.

§ignore_comments: bool

Whether or not should comments be omitted. Default is true.

If true, Comment events will not be emitted at all.

§coalesce_characters: bool

Whether or not should sequential Characters events be merged. Default is true.

If true, multiple sequential Characters events will be merged into a single event, that is, their data will be concatenated.

Multiple sequential Characters events are only possible if either cdata_to_characters or ignore_comments are set. Otherwise character events will always be separated by other events.

§extra_entities: HashMap<String, String>

A map of extra entities recognized by the parser. Default is an empty map.

By default the XML parser recognizes the entities defined in the XML spec. Sometimes, however, it is convenient to make the parser recognize additional entities which are also not available through the DTD definitions (especially given that at the moment DTD parsing is not supported).

§ignore_end_of_stream: bool

Whether or not the parser should ignore the end of stream. Default is false.

By default the parser will either error out when it encounters a premature end of stream or complete normally if the end of stream was expected. If you want to continue reading from a stream whose input is supplied progressively, you can set this option to true. In this case the parser will allow you to invoke the next() method even if a supposed end of stream has happened.

Note that support for this functionality is incomplete; for example, the parser will fail if the premature end of stream happens inside PCDATA. Therefore, use this option at your own risk.

§replace_unknown_entity_references: bool

Whether or not non-unicode entity references get replaced with the replacement character

When true, any decimal or hexadecimal character reference that cannot be converted from a u32 to a char using std::char::from_u32 will be converted into the unicode REPLACEMENT CHARACTER (U+FFFD).

§ignore_root_level_whitespace: bool

Whether or not whitespace at the root level of the document is ignored. Default is true.

By default any whitespace that is not enclosed within at least one level of elements will be ignored. Setting this value to false will cause root level whitespace events to be emitted.

There are configuration options – see methods below

Implementations§

Source§

impl ParserConfig

Source

pub fn new() -> Self

Returns a new config with default values.

You can tweak default values using builder-like pattern:

use xml::reader::ParserConfig;

let config = ParserConfig::new()
    .trim_whitespace(true)
    .ignore_comments(true)
    .coalesce_characters(false);
Source

pub fn create_reader<R: Read>(self, source: R) -> EventReader<R>

Creates an XML reader with this configuration.

This is a convenience method for configuring and creating a reader at the same time:

use xml::reader::ParserConfig;

let mut source: &[u8] = b"...";

let reader = ParserConfig::new()
    .trim_whitespace(true)
    .ignore_comments(true)
    .coalesce_characters(false)
    .create_reader(&mut source);

This method is exactly equivalent to calling EventReader::new_with_config() with this configuration object.

Source

pub fn add_entity<S: Into<String>, T: Into<String>>( self, entity: S, value: T, ) -> Self

Adds a new entity mapping and returns an updated config object.

This is a convenience method for adding external entities mappings to the XML parser. An example:

use xml::reader::ParserConfig;

let mut source: &[u8] = b"...";

let reader = ParserConfig::new()
    .add_entity("nbsp", " ")
    .add_entity("copy", "©")
    .add_entity("reg", "®")
    .create_reader(&mut source);
Source§

impl ParserConfig

Source

pub const fn trim_whitespace(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn whitespace_to_characters(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn cdata_to_characters(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn ignore_comments(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn coalesce_characters(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn ignore_end_of_stream(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn replace_unknown_entity_references(self, value: bool) -> Self

See ParserConfig fields docs for details

Source

pub const fn ignore_root_level_whitespace(self, value: bool) -> Self

See ParserConfig fields docs for details

Source§

impl ParserConfig

Source

pub fn override_encoding(self, value: Option<Encoding>) -> ParserConfig2

Set if you got one in the HTTP header (see content_type)

See ParserConfig2 fields docs for details

Source

pub fn ignore_invalid_encoding_declarations(self, value: bool) -> ParserConfig2

Allow <?xml encoding="bogus"?>

See ParserConfig2 fields docs for details

Source

pub fn allow_multiple_root_elements(self, value: bool) -> ParserConfig2

Allows invalid documents. There should be only a single root element in XML.

See ParserConfig2 fields docs for details

Source

pub fn max_entity_expansion_length(self, value: usize) -> ParserConfig2

Abort if custom entities create a string longer than this

See ParserConfig2 fields docs for details

Source

pub fn max_entity_expansion_depth(self, value: u8) -> ParserConfig2

Entities can expand into other entities this many times (be careful about exponential cost!)

See ParserConfig2 fields docs for details

Source

pub fn max_attributes(self, value: usize) -> ParserConfig2

Max number of attributes per element

See ParserConfig2 fields docs for details

Source

pub fn max_name_length(self, value: usize) -> ParserConfig2

Maximum length of tag name or attribute name

See ParserConfig2 fields docs for details

Source

pub fn max_attribute_length(self, value: usize) -> ParserConfig2

Max number of bytes in each attribute

See ParserConfig2 fields docs for details

Source

pub fn max_data_length(self, value: usize) -> ParserConfig2

Maximum length of strings reprsenting characters, comments, and processing instructions

See ParserConfig2 fields docs for details

Source

pub fn content_type(self, value: &str) -> ParserConfig2

Set encoding from the MIME type. Important for HTTP compatibility.

See ParserConfig2 fields docs for details

Trait Implementations§

Source§

impl Clone for ParserConfig

Source§

fn clone(&self) -> ParserConfig

Returns a copy of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ParserConfig

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ParserConfig

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl From<ParserConfig> for ParserConfig2

Source§

fn from(c: ParserConfig) -> Self

Converts to this type from the input type.
Source§

impl PartialEq for ParserConfig

Source§

fn eq(&self, other: &ParserConfig) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for ParserConfig

Source§

impl StructuralPartialEq for ParserConfig

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.