Swift解析XML时属性值末尾空格导致匹配失败的解决方法咨询
Swift解析XML时属性值末尾空格导致匹配失败的解决方法咨询
嗨,这个问题很常见,我来给你几个简单有效的解决思路:
- 直接修剪属性值的空白字符:这是最直接的方案,在获取到属性文本后,调用
trimmingCharacters(in: .whitespaces)方法去掉首尾的空格(不管末尾有多少个随机空格都能处理)。同时建议你避免使用强制解包!,改用可选绑定来保证代码的安全性,防止因为某个元素缺少name属性导致崩溃。修改后的代码如下:
let subIndexer = xml["Objects"]["Points"]["Point"] .filterAll { elem, _ in // 安全获取属性和文本值 guard let nameAttribute = elem.attribute(by: "name"), let nameText = nameAttribute.text else { return false } // 修剪空格后再匹配 return nameText.trimmingCharacters(in: .whitespaces) == "ABC" }
处理更多空白类型:如果XML里除了空格还有制表符、换行符这类空白字符,你可以把
.whitespaces换成.whitespacesAndNewlines,这样能一次性处理所有空白类型,适配更复杂的XML情况。提前封装修剪逻辑:如果你需要多次处理这类属性值,可以封装一个小工具方法,让代码更简洁:
extension String { func trimmed() -> String { return self.trimmingCharacters(in: .whitespacesAndNewlines) } }
之后就可以直接用nameText.trimmed() == "ABC"来做匹配啦。
这样处理后,不管属性值末尾有多少个随机空格,都能精准匹配到你想要的元素!
备注:内容来源于stack exchange,提问作者hgiraud
相关产品推荐
相关产品推荐

