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 检测元素结束的主要内容,如果未能解决你的问题,请参考以下文章
GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 获取 Xml 文件中的节点和属性 | 获取 Xml 文件中的节点属性 )
UE4 C++解析与构建 XML 数据,XmlParser 与 tinyxml
忽略 xml.etree.ElementTree.XMLParser Python 中不匹配的标签
GroovyXml 反序列化 ( 使用 XmlParser 解析 Xml 文件 | 删除 Xml 文件中的节点 | 增加 Xml 文件中的节点 | 将修改后的 Xml 数据输出到文件中 )