20 releases (8 breaking)
Uses old Rust 2015
|0.8.1||Apr 21, 2018|
|0.7.0||Mar 11, 2018|
|0.6.2||Dec 16, 2017|
|0.5.0||Sep 26, 2017|
|0.1.0||Oct 9, 2016|
#105 in Data formats
1,335 downloads per month
Used in 4 crates (via octicons)
svgparser is a pull-based parser for SVG 1.1 Full data format without heap allocations.
It's not an XML parser since it does not only split the content into the XML nodes, but also supports SVG types parsing.
Table of Contents
Supported SVG types
- <number> and <list-of-numbers>
- <length> and <list-of-lengths>
See the documentation for details.
- Most of the common data parsed into internal representation, and not just as string (unlike typical XML parser). Tag names, attribute names, attributes value, etc.
- Complete support of paths, so data like
M10-20A5.5.3-4 110-.1will be parsed correctly.
- Predefined SVG values for presentation attributes,
inherit, etc. are parsed as
enum, not as
- Every type can be parsed separately, so you can parse just paths or transform or any other SVG value.
- Good error processing. All error types contain position (line:column) where it occurred.
- No heap allocations.
- Pretty fast.
- All keywords must be lowercase. Case-insensitive parsing is supported only for colors (requires allocation for named colors). Still, it's extremely rare.
<color>followed by the
<icccolor>is not supported. As the
- Only ENTITY objects are parsed from the DOCTYPE. Other ignored.
- CSS styles does not processed. You should use an external CSS parser.
- Comments inside attributes value supported only for the
- System colors, like
fill="AppWorkspace", are not supported.
- There is no separate
opacity-valuetype. It will be parsed as
<number>, but will be bound to 0..1 range.
- Implicit path commands are not supported. All commands are parsed as explicit.
- Implicit MoveTo commands will be automatically converted into explicit LineTo.
- The library should not panic. Any panic considered as a critical bug and should be reported.
- The library forbids unsafe code.
- svg, which has about 10% of
svgparserfeatures. Also has minimal writing capabilities, unlike
svgparser, which is parser only.
If you need writing and DOM manipulations - checkout
svgdom crate, which is built on top of
If you know about other alternatives - please send a pull request.
Dependency: Rust >= 1.18
Add this to your
[dependencies] svgparser = "0.8"
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.