使用数字字符串创建XML

时间:2011-09-17 21:32:53

标签: objective-c xml cocoa

我正在从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>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

Apple NSXMLNode中有关setObjectValue的文档是暗示性的:

注意:在Mac OS X v 10.6之前,setObjectValue:会不正确地且不一致地格式化作为NSNumber实例的对象。在Mac OS X 10.6或更高版本上链接的应用程序将对传递给setObjectValue的所有NSNumber使用正确的科学记数法: 如果您需要XML文档中任何值的特定格式,您应该自己将数据格式化为字符串,然后使用setStringValue:来设置值。这可以保证生成的文本采用您直接控制的格式。