6

プログラムで XML ファイルを作成するときに、適切な方法で 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ファイルをそのようにフォーマットするにはどうすればよいですか? ありがとう!

PS

答えてくれてありがとう..しかし、保存するために私が持っている 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 に答える