Swift XMLParser 检测元素结束
Posted
技术标签:
【中文标题】Swift XMLParser 检测元素结束【英文标题】:Swift XMLParser Detect End of Element 【发布时间】:2021-12-15 00:50:08 【问题描述】:我正在解析一个 SVG 文档,以提取其中包含的路径并将它们转换为 UIBezier 路径。但是,在某些文件中,路径位于具有转换的组中。数据的目的地没有层次结构,因此我必须从任何路径的包含组中提取转换,并使用 AffineTransform 将其应用于每个路径。
我可以成功检测到包含路径中的转换并获取所需的数据。因为源文件可能是分层的,所以转换中可能存在转换,所以我需要将它们存储在一个数组中。
如何检测元素的结尾,然后将变换从数组中弹出?解析器似乎没有响应关闭元素的"</g>"
标签
【问题讨论】:
成功了,谢谢! 我已为您添加了Community Wiki 答案。如果您想添加自己的答案,我很乐意将其删除。 【参考方案1】:为了扩展 this solution,我创建了第二个 parse() 函数,它传递了 didEndElement
所在的 didStartElement
,并且没有传递 attributesDict(因为它是最后一个元素并且没有属性)。
这会在所需条件下触发;从那里我可以构建我想要的代码。
这是一个示例:
func parser(_ parser: XMLParser,
didEndElement elementName: String,
namespaceURI: String?,
qualifiedName qName: String?)
if elementName == "g"
transforms.removeLast()
从 Dan Donaldson 对此问题的编辑中复制了答案。
【讨论】:
以上是关于Swift XMLParser 检测元素结束的主要内容,如果未能解决你的问题,请参考以下文章