[−][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 |
|
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. |