1

我正在读写的 XML 数据库的注释字段存储为 NSXMLElement 的属性。一个条目包含换行符 (0x0a) 字符。这些由我正在解析的文档中的非 NSXML 编码器编码,
并由 NSXML 正确解析。它们导致 NSString 包含内存中的 unicode 值 0x0a 0x00 (英特尔字节排序)。

例如:

<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test &amp; More Test &#xA;&#xA;After the Line Feeds"</INFO>

当将此 NSString 作为 NSXMLElement 属性的值写回时,它不会被编码回并导致以下内容输出到 xml 文件:

 <INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test &amp; More Test 

After the Line Feeds"</INFO>

再次重新读取文件时,当然不会正确解析。

似乎节点选项像NSXMLNodePreserveCharacterReferencesNSXMLNodePreserveEntities应该是要走的路,但它似乎没有任何帮助。

我一定错过了显而易见的事情,但我整天都被困在这上面。

4

2 回答 2

1

与 Apple 核实,这是 NSXMLDocument 的一个已知问题,现在已作为错误报告提交。

建议的解决方法包括暂时使用 libxml2。

如果我在未来的版本中看到这个问题,我会发表评论。

于 2012-11-13T16:42:35.353 回答
-1

苹果 说:

名称中带有“Preserve”的选项仅在解析 XML 的外部源时适用;它们对以编程方式创建的节点对象没有影响。其他选项用于 NSXMLDocument 的初始化和输出方法;有关详细信息,请参阅 NSXMLDocument 参考文档。`它对我不起作用,我认为这是一个错误。

我用 KissXML 解决了这个问题。

于 2018-09-21T08:08:15.333 回答