2011-09-17 31 views
0

我从NSDictionarys阵列,创建一个XML文档如下:创建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

什么是排序以及如何在这里添加数据。 – Mark

+0

排序的原始数据是从XML文件中读取的。也许那个字典不是全部字符串对象。 – Flyingdiver

+0

问题是什么类型[infoObjectForKey:返回,因为这是什么打印 – Mark

回答

0

苹果在NSXMLNode文档setObjectValue暗示:

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

+0

嗯。也许我确实在该字典中有NSNumbers,而不是NSStrings。无论如何,对于那个领域。我解析了另一个XML文件,我以为我正在取回所有的NSString。 – Flyingdiver