我想在 OS X 上用 C++ 解析SVG文件,我需要一个库。它应该简单,轻量级并且不应该有很多依赖项。我的 SVG 文件也很简单——它们只包含简单的形状和路径,如矩形和转换信息。你知道任何解析器吗?
注意:我想超越 XML 结构解析的形状信息,如矩形宽度、高度和路径点、浮点数等。我已经尝试过libtinysvg,它不会解析大多数 w3c 示例,并且有一些自己的依赖项!
我想在 OS X 上用 C++ 解析SVG文件,我需要一个库。它应该简单,轻量级并且不应该有很多依赖项。我的 SVG 文件也很简单——它们只包含简单的形状和路径,如矩形和转换信息。你知道任何解析器吗?
注意:我想超越 XML 结构解析的形状信息,如矩形宽度、高度和路径点、浮点数等。我已经尝试过libtinysvg,它不会解析大多数 w3c 示例,并且有一些自己的依赖项!
新的SVG++ 库是 C++ 中 SVG 读取的不错选择,只是它不是轻量级的,需要 Boost 库。但由于它是仅标头库并且仅使用来自 Boost 的仅标头库,因此您只需获取 SVG++ 和 Boost 并将它们添加到包含路径,无需构建。
你有几个选择:
关于 libsvgtiny 的注意事项:它是由 Netsurf Browser 项目开发的,并且具有许多其他项目可能捆绑的非常小的依赖项,但它们有意分离出不同的功能(它们还解析 html、xml 和 css,因此常见的解析位是一个单独的库)。我已经从他们在 nsfb中的示例代码构建了一个基本的 svg 查看器,使用 musl-libc 使用 libxcb 后端静态编译到 300kb 以下(glibc + libx11 + librsvg + 它们的所有依赖项都远远超过 10 倍)
关于 librsvg 的注意事项:它是最常用的,但具有更多的依赖项。
关于 Amaya 的注意事项:不在积极开发中,仅在它接近您开始尝试做的事情时提及。9.x 之前的版本只需要 gtk+-1.X(现在是跨平台的 Wx)
关于 QT 的注意事项:如果您使用 C++ 想要一个跨平台的 gui,那么这可能是一个不错的选择,因为许多 C++ gui 工具包(fltk、FOX 等)没有内置的 svg 功能
webkit 或 chromium 嵌入:这些是跨平台的,提供了大量的矫枉过正。您不仅会获得 SVG,还会获得许多您可能不需要的东西……但由于所有程序都在发展,直到它们可以发送邮件,这将使您在以后领先于游戏。
Xml 解析器:太多了,不胜枚举,但您可以从 tinysvg 中提取一些代码以获得其他属性
我的建议:从 svgtiny 开始并添加您需要的任何功能。Netsurf 开发人员非常开放和乐于助人。
SVG 是一种特殊类型的 XML(源)。因此,任何允许您解析 XML 的 C/C++ 库也将允许您解析 SVG。
许多库被发布为问题Best open XML parser for C++的答案。他们之中有一些是