编辑NSXMLDocument而不转义特殊字符

时间:2011-09-06 23:27:15

标签: objective-c xml cocoa

我有一个我正在编辑的NSXMLDocument然后保存。问题是,它正在逃避我的&和<。

NSArray *nodes = [document nodesForXPath:@"JDF/JDF/ResourcePool/od:Ticket/od:Parameter/DefaultOutputOption" error:nil];
[[nodes objectAtIndex:0] setStringValue:@"34""];
NSLog(@"%@", [[nodes objectAtIndex:0]stringValue]);
[[nodes objectAtIndex:1] setStringValue:@"1<2"];
NSLog(@"%@", [[nodes objectAtIndex:1]stringValue]);
NSData *xmlData = [document XMLDataWithOptions:NSXMLNodePreserveAll];
[xmlData writeToFile:path atomically:YES];

在控制台中我得到了你对NSLog语句的期望:

2011-09-06 16:05:56.480 My App[14369:707] 34&quot;
2011-09-06 16:05:56.482 My App[14369:707] 1<2

但是在我的XML文档中,我得到了:

34&amp;quot;
1&lt;2

我做错了什么?

1 个答案:

答案 0 :(得分:0)

从技术上讲,你没有做错任何事。为节点设置文本值时,应使用原始的非转义形式。当节点被序列化为XML时,一些字符将被转义,例如, “将成为&amp; quot;而&lt;将成为&amp; lt;。

我想在第一个节点中真正想要输入文本的是34",它以XML序列化形式为34&quot;