我正在Swift中解析一个带有法语文本的大XML文件,当我从其中检索节点值时,会随机删除一些空白。
这是文件(开放源代码,超过5mb):https : //svn.code.sf.net/p/javacrim/code/littre/xml/a.xml
随机地,在强调字符之前删除空格。例如,这是XML的一行:
<dictScrap>Entre un substantif et un verbe. L'exhortation <oVar>à</oVar> combattre. L'encouragement <oVar>à</oVar> bien vivre. La disposition <oVar>à</oVar> plaisanter. La promptitude <oVar>à</oVar> faire. L'habileté <oVar>à</oVar> parler. La facilité <oVar>à</oVar> comprendre. La répugnance <oVar>à</oVar> venir. Le plaisir <oVar>à</oVar> obéir. La fermeté <oVar>à</oVar> soutenir la vérité. La honte <oVar>à</oVar> mentir.</dictScrap>
这是解析后的行:
Optional("Entre un substantif et un verbe. L\'exhortationà combattre. L\'encouragement à bien vivre. La disposition à plaisanter. La promptitude à faire. L\'habileté à parler. La facilité à comprendre. La répugnance à venir. Le plaisir à obéir. La fermeté à soutenir la vérité. La honte à mentir.")
请注意,第一个à之前的空白消失了,但其他空格没有消失。
我<oVar>
用编辑器删除了所有带有search-replace的内容,不需要这些内容,并且懒于尝试使用代码来实现。
我正在使用AEXML进行解析:https : //github.com/tadija/AEXML
这是我的代码,除了获取字符串并将其打印之外,它什么也不做:
if sense["dictScrap"].count > 0 {
senseEntity.value = sense["dictScrap"].value
}
println(senseEntity.value)
谢谢你的帮助!
因此,我查看了AEXML源代码,并发现了导致此问题的此函数:
func parser(parser: NSXMLParser, foundCharacters string: String) {
currentValue += string.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
currentElement?.value = currentValue
}
当我删除.stringByTramming...
空格时,不再删除。
如果然后.stringByTrimmingCharactersInSet(NSCharacterSet.whitespaceAndNewlineCharacterSet())
在解析后的值上使用,则最终字符串看起来像我想要的那样。
谢谢大家!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句