【发布时间】:2011-09-14 00:04:34
【问题描述】:
我已经为 Android 创建了一个 SVG 图像解析器类,它运行良好,并且对于我想要的目的来说非常完整。我目前正在编写的应用程序利用了我事先在 Inkscape 中设计的建筑平面图。现在,我想做的是能够在计划上标记特定的 X、Y 点,这些点不会被渲染,但只会用于通知软件应用程序特定点在计划中的位置。这样应用程序就可以在运行时以编程方式将各种标记放置在这些点上。
它的实际编码不是问题;虽然我可以使用各种对象,但我目前已经使用文本字符串工作了。我所做的是放置一个文本字符串,并给文本字符串的 ID 属性一个特殊的前缀,例如“_meta”。然后,我的 SVG 解析器识别该前缀,并记录字符串的 X、Y 坐标以及我在“_meta”前缀之后放入 ID 属性中的任何其他元数据。字符串不会呈现到屏幕上;它纯粹是为了告诉软件一个特定的点。
这行得通,我可以愉快地继续这样做,但我想知道是否有更“正确”或更优雅的方式来做到这一点。我查看了 SVG 规范,我对标准元数据标签的理解是它们只能传达有关图像的信息。据我所知,没有专门用于标记任何 X、Y 点的对象。使用对象的 ID 字段来传达程序解析的信息是可行的,但它似乎有点错误并且滥用了 ID 属性的用途。
我应该考虑其他任何方法吗?
谢谢,
特雷夫
【问题讨论】:
-
如果你写了解析器,你有什么理由不能添加一个新的命名空间并寻找它?
-
谢谢安德鲁。我可以,但是非常希望能够使用 Inkscape 的 GUI 在计划上标记点,而不是手动编辑 XML 文件(使用 Inkscape 的 XML 编辑器或其他方式)。结果是我或其他用户可以为应用程序创建新计划,而无需将特殊标记坐标键入文件中。也许唯一现实的长期答案是我编写一个单独的平面图创建器应用程序,它提供特殊的标记功能 - 并按照您的建议将它们插入到自定义命名空间下。