【发布时间】:2013-06-20 00:25:54
【问题描述】:
我有一个名为 options.xml 的非常简单的 xml 文件
<Dat>
<Name>Tom</Name>
<Option>1</Option>
</Dat>
我正在尝试使用 NSXML 将“Tom”更改为“Jim”并保存文件。我怎样才能做到这一点。我阅读了许多文档,但没有直接的解决方案。有人可以帮我写代码吗?
更新:我最终尝试使用 Gdatasxml
-(void)saveToXML
{
NSString* path = [[NSBundle mainBundle] pathForResource:@"options" ofType:@"xml"];
NSData *xmlData = [[NSMutableData alloc] initWithContentsOfFile:path];
NSError *error;
GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:xmlData options:0 error:&error];
GDataXMLElement *rootElement = [GDataXMLElement elementWithName:@"Dat"];
NSArray *mySettings = [doc.rootElement elementsForName:@"Dat"];
for (GDataXMLElement *mySet in mySettings)
{
NSString *name;
NSArray *names = [mySet elementsForName:@"Name"];
if (names.count > 0)
{
GDataXMLElement *childElement = (GDataXMLElement *) [names objectAtIndex:0];
name = childElement.stringValue;
NSLog(childElement.stringValue);
[childElement setStringValue:@"Jim"];
}
}
[xmlData writeToFile:path atomically:YES];
}
但这不是保存数据。帮助。
【问题讨论】:
-
Putz1103 是对的,您确实想将其解析为某种结构,更改值,然后将 XML 写回。如果你想作弊,你可以把它加载到
NSString,然后做一个简单的newString = [oldString stringByReplacingOccurrencesOfString:@"<Name>Tom</Name>" withString:@"<Name>Jim</Name>"];。如果您需要更复杂的字符串搜索和替换,您可以使用NSRegularExpression或NSScanner。但稳健的解决方案(例如,如果您有 CDATA 元素,上述方法可能不起作用)是解析 XML,更新您的模型,然后将其写回。 -
您是否注意到您的代码读入一个文件,使用该文件初始化一个新对象,以您想要的方式操作新对象,然后将原始文件数据写回一个新文件?跨度>