20个版本 (8个重大更改)
使用旧的Rust 2015
0.8.1 | 2018年4月21日 |
---|---|
0.7.0 | 2018年3月11日 |
0.6.2 | 2017年12月16日 |
0.5.0 | 2017年9月26日 |
0.1.0 | 2016年10月9日 |
#143 in 数据格式
每月1,277次下载
160KB
4K SLoC
svgparser
已弃用。请使用 svgtypes
代替。
svgparser 是一个基于拉取的解析器,用于解析没有堆分配的 SVG 1.1 Full 数据格式。
它不是一个XML解析器,因为它不仅将内容分割成XML节点,还支持 SVG类型 解析。
目录
支持的SVG类型
- <color>
- <paint>
- <path>
- <number> 和 <list-of-numbers>
- <length> 和 <list-of-lengths>
- <coordinate>
- <IRI>
- <FuncIRI>
- <transform-list>
- <style>
- <viewBox>
- <list-of-points>
详细信息请参阅文档。
优点
- 大多数常见数据都解析为内部表示,而不仅仅是作为字符串(与典型的XML解析器不同)。标签名称、属性名称、属性值等。
- 完全支持路径,因此如
M10-20A5.5.3-4 110-.1
这样的数据将被正确解析。 - 用于表示属性的 预定义SVG值,如
auto
、normal
、none
、inherit
等,作为enum
解析,而不是作为String
。 - 每种类型都可以单独解析,因此您可以只解析路径、转换或任何其他SVG值。
- 良好的错误处理。所有错误类型都包含错误发生的位置(行:列)。
- 没有堆分配。
- 非常快。
局限性
- 所有关键字都必须小写。仅支持颜色的不区分大小写的解析(需要为命名颜色分配空间)。尽管如此,这种情况非常罕见。
- 紧随其后的是
<tt class="txt-html txt-html-bas"><color>
,然后是<tt class="txt-html txt-html-bas"><icccolor>
,这是不支持的。就像<tt class="txt-html txt-html-bas"><icccolor>
一样。 - 从 DOCTYPE 中只解析 ENTITY 对象。其他对象被忽略。
- CSS 样式不处理。您应该使用外部 CSS 解析器。
- 仅支持
style
属性值中的注释。 - 系统颜色,如
fill=
"AppWorkspace",不支持。 - 没有单独的
opacity-value
类型。它将被解析为<tt class="txt-html txt-html-bas"><number>
,但将被绑定到 0..1 范围。 - 不支持隐式路径命令。所有命令都按显式命令解析。
- 隐式 MoveTo 命令将自动转换为显式 LineTo。
安全性
- 库不应该崩溃。任何崩溃都被视为关键错误,应该报告。
- 库禁止不安全代码。
替代方案
- svg,它拥有约 10% 的
svgparser
功能。还具有最小写入能力,而svgparser
仅是解析器。
如果您需要写入和 DOM 操作,请查看 svgdom crate,它是建立在 svgparser
之上的。
如果您知道其他替代方案,请发送 pull request。
用法
依赖项:Rust >= 1.18
将其添加到您的 Cargo.toml
[dependencies]
svgparser = "0.8"
许可
许可协议为以下之一:
- Apache License,版本 2.0(《LICENSE-APACHE》或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT 许可协议(《LICENSE-MIT》或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确表示,否则您提交的任何旨在包含在作品中的贡献(根据 Apache-2.0 许可证定义),均应按上述方式双重许可,无需任何附加条款或条件。
依赖项
~325KB