6

有没有一种方法可以在以编程方式创建 XML 文件时以正确的方式格式化它?

例如,如果我使用此代码创建一个简单的 XML 文件:

NSXMLElement *fallback_driver = [[NSXMLElement alloc] initWithName:@"fallback-driver"];

NSXMLElement *folder = [[NSXMLElement alloc] initWithName:@"folder"];
[folder setStringValue:[ads_make objectValueOfSelectedItem]];
NSXMLElement *filename =[[NSXMLElement alloc] initWithName:@"filename"];
[filename setStringValue:ads_driver_name_selected];

[fallback_driver addChild:folder];
[fallback_driver addChild:filename];

NSXMLElement* rootNode = [ads_user_printxml rootElement];
[rootNode addChild:fallback_driver];

当它运行时,我想按照下图中的注释部分输出,而不是实际的 XML(未注释)。

xml代码

如何以这种方式格式化 XML 文件?谢谢!

附言

感谢您的回答。但是,我想将我拥有的 NSXMLDocument 转换为 NSData 以保存...

我在尝试

NSData *newData = [[ads_user_printxml XMLDataWithOptions:NSXMLNodePrettyPrint]XMLData];

但是我收到警告说“'NSData'可能不会响应'-XMLData',在我添加XMLDataWithOptions之前它工作正常。我还尝试了'XMLStringWithOptions'方法(如你所说 - 但认为数据更多适当),但产生了相同的警告。

有任何想法吗?非常感谢!

4

1 回答 1

11

您可以使用以下命令输出格式良好的 XML 字符串:

NSString* string = [xmlNode XMLStringWithOptions:NSXMLNodePrettyPrint];

请注意,因为NSXMLDocumentNSXMLElement是 的子类NSXMLNode,所以您也可以对这些类执行此操作。

如果您想要NSData而不是字符串,只需执行以下操作:

NSData* xmlData = [xmlNode XMLDataWithOptions:NSXMLNodePrettyPrint];
于 2012-04-25T07:03:24.967 回答