NSXMLDocument系列:空白的运行折叠为一个

时间:2015-11-18 01:07:44

标签: xml swift macos cocoa nsxmldocument

我正在解析一些XML(MS-Word的document.xml有效载荷.docx,如果这很重要的话)我需要严格正确的字符偏移。我正在使用Cocoa(OS X)的NSXMLDocument系列进行树分析。我解决了大多数问题,除了解析器报告空格字符作为单个空格运行。

本文档中用于运行文本的原子是<w:t/>。在某些情况下,有一个单空间运行:

<w:t xml:space="preserve"> </w:t>

在我实例化顶级XML对象时,空格被禁止,直到我提供了NSXMLDocumentTidyXML选项:

let xmlDocument = try? NSXMLDocument(data: fileData, options: NSXMLDocumentTidyXML)

很好,但并不能解决所有问题。请在XML内容中考虑这一点:

<w:t>available to be digitized and posted.  But while there</w:t>

您可能会注意到这段时间后有两个空格。表示NSXMLElement的{​​{1}}以及包含它的任何元素都坚持在句点之后只有一个空格,如<w:t/>所报告的那样以及节点的调试表示:

theElement.stringValue!

我可以忍受这个,但我的计数必须与Pages,Word和<w:t>available to be digitized and posted. But while there</w:t> 中的渲染器保持一致,所有这些都保留了空格的运行。

我尝试通过对所有这些元素强加NSAttributedString来强制执行<w:t/>元素:

xml:space="preserve"

我准备相信这是不好的代码,但无论如何,它对问题没有影响。到目前为止可能已经太晚了。

如何让Cocoa XML树解析器停止将空格划分到一个空间?当然这是一个已经解决的问题 - 世界并没有因为空间崩溃而辞职。

我可以避免使用第三方XML解析器吗?

0 个答案:

没有答案