【发布时间】:2015-02-04 17:15:44
【问题描述】:
我正在用 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>,不需要这些,懒得尝试用代码来做。
我正在使用 AEXML 进行解析:https://github.com/tadija/AEXML
这是我的代码,除了获取字符串并打印它之外什么都不做:
if sense["dictScrap"].count > 0 {
senseEntity.value = sense["dictScrap"].value
}
println(senseEntity.value)
感谢您的帮助!
【问题讨论】:
-
您能否提供一个(最小的)自包含代码示例(和 XML)来演示该问题?
-
一些 XML 解析器确实删除了元素上下文中的 "空格*(如果他们认为它不是文档上下文中有意义的部分,有时会被错误地称为“可忽略的空格”。还有XML 解析器将规范化空白的地方。*HOWEVER,这显然发生在
标记的处理中,即 not 由解析器完成,但由应用程序代码完成;找到该代码并修复错误。
标签: xml parsing swift xml-parsing