我正在从NSDictionarys数组中创建一个XML文档,如下所示:
for (NSDictionary *info in sorted)
{
NSArray *item = [NSArray arrayWithObjects:
[NSXMLElement elementWithName: @"name" stringValue: [info objectForKey: @"Name"]],
[NSXMLElement elementWithName: @"year" stringValue: [info objectForKey: @"Year"]],
nil];
node = [NSXMLElement elementWithName: @"item" children: item attributes:nil];
[root addChild:node];
}
NSData *xmlData = [xmlDoc XMLDataWithOptions:NSXMLNodePrettyPrint];
然后我写出NSData对象。一切正常。
问题是“年”实体的值正在转换为科学记数法。也就是说,如果信息字典中的原始字符串是“1998”,那么XML文件中的最终结果是:
<year>1.998E3</year>
我在添加元素时尝试在字符串周围加引号,但后来我在输出XML中得到引号:
<year>"1998"</year>
有什么想法吗?
答案 0 :(得分:0)
Apple NSXMLNode中有关setObjectValue的文档是暗示性的:
注意:在Mac OS X v 10.6之前,setObjectValue:会不正确地且不一致地格式化作为NSNumber实例的对象。在Mac OS X 10.6或更高版本上链接的应用程序将对传递给setObjectValue的所有NSNumber使用正确的科学记数法: 如果您需要XML文档中任何值的特定格式,您应该自己将数据格式化为字符串,然后使用setStringValue:来设置值。这可以保证生成的文本采用您直接控制的格式。