[][src]Crate xmlparser

xmlparser is a low-level, pull-based, zero-allocation XML 1.0 parser.

Example

for token in xmlparser::Tokenizer::from("<tagname name='value'/>") {
    println!("{:?}", token);
}

Why a new library

This library is basically a low-level XML tokenizer that preserves a position of the tokens and does not intend to be used directly. If you are looking for a more high-level solution - checkout roxmltree.

Benefits

  • All tokens contain StrSpan objects which contain a position of the data in the original document.
  • Good error processing. All error types contain position (line:column) where it occurred.
  • No heap allocations.
  • No dependencies.
  • Tiny. ~1500 LOC and ~40KiB in the release build according to the cargo-bloat.

Limitations

  • Currently, only ENTITY objects are parsed from the DOCTYPE. Other ignored.
  • No tree structure validation. So an XML like <root><child></root></child> or a string without root element will be parsed without errors. You should check for this manually. On the other hand <a/><a/> will lead to an error.
  • Duplicated attributes is not an error. So an XML like <item a="v1" a="v2"/> will be parsed without errors. You should check for this manually.
  • UTF-8 only.

Safety

  • The library must not panic. Any panic considered as a critical bug and should be reported.
  • The library forbids the unsafe code.

Structs

StrSpan

An immutable string slice.

Stream

A streaming XML parsing interface.

TextPos

Position in text.

Tokenizer

Tokenizer for the XML structure.

Enums

ElementEnd

ElementEnd token.

EntityDefinition

Representation of the EntityDef value.

Error

An XML parser errors.

ExternalId

Representation of the ExternalID value.

Reference

Representation of the Reference value.

StreamError

A stream parser errors.

Token

An XML token.

TokenType

List of token types.

Traits

XmlByteExt

Extension methods for XML-subset only operations.

XmlCharExt

Extension methods for XML-subset only operations.