我正在读写的XML数据库的注释字段存储为NSXMLElement的属性。一个条目包含换行符(0x0a)字符。这些由我正在解析为

的文档中的非NSXML编码器编码,并由NSXML正确解析。它们导致NSString在内存中包含unicode值0x0a 0x00(英特尔字节排序)。
例如:
<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test & More Test 

After the Line Feeds"</INFO>
当将此NSString作为NSXMLElement属性的值写回时,它不会被编码回来并导致以下内容输出到xml文件:
<INFO BITRATE="192000" GENRE="Podcast" COMMENT="Test & More Test
After the Line Feeds"</INFO>
当重新读取文件时,当然无法正确解析。
似乎应该选择像NSXMLNodePreserveCharacterReferences
或NSXMLNodePreserveEntities
这样的节点选项,但它似乎没有任何帮助。
我一定错过了明显的事情,但我整天都被困在这一天。
答案 0 :(得分:1)
与Apple联系,这是NSXMLDocument的一个已知问题,现在它已作为错误报告提交。
建议的解决方法包括暂时使用libxml2。
如果我在将来的版本中看到这个问题,我会发表评论。
答案 1 :(得分:-1)
苹果说:
名称中带有“保留”的选项仅在解析XML的外部源时适用;它们对以编程方式创建的节点对象没有影响。 NSXMLDocument的初始化和输出方法中使用了其他选项。有关详细信息,请参见NSXMLDocument参考文档。 它对我不起作用,我认为这是一个错误。
我用KissXML解决了这个问题。