2012-04-25 34 views
6

Có cách nào để tôi có thể định dạng một tệp XML theo đúng cách khi tạo nó theo cách lập trình không?Ca cao - Cách định dạng tập tin XML

Ví dụ, nếu tôi sử dụng mã này để tạo ra một tập tin XML đơn giản:

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]; 

Khi điều này được chạy, tôi muốn đầu ra được theo phần nhận xét trong hình dưới đây, không phải là XML thực tế (không được nhận xét).

xml code

Làm cách nào để định dạng tệp XML theo cách đó? Cảm ơn!

P.S.

Cảm ơn cho câu trả lời .. Tuy nhiên, tôi muốn chuyển đổi NSXMLDocument rằng tôi có thành NSData cho tiết kiệm ...

tôi đang cố gắng

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

Tuy nhiên tôi nhận được một cảnh báo rằng "'NSData' có thể không đáp ứng với '-XMLData', nơi trước khi tôi thêm XMLDataWithOptions nó đã làm việc tốt. Tôi cũng đã thử phương pháp 'XMLStringWithOptions' (như bạn đã nói - nhưng figured rằng dữ liệu là thích hợp hơn), nhưng cảnh báo tương tự đã được tạo.

Bất kỳ i deas? Cảm ơn rất nhiều!

Trả lời

11

Bạn có thể xuất một chuỗi XML định dạng độc đáo bằng cách sử dụng sau đây:

NSString* string = [xmlNode XMLStringWithOptions:NSXMLNodePrettyPrint]; 

Lưu ý rằng vì NSXMLDocumentNSXMLElement là lớp con của NSXMLNode, bạn có thể làm điều này với những lớp học cũng có.

Nếu bạn muốn NSData thay vì một chuỗi, chỉ cần làm:

NSData* xmlData = [xmlNode XMLDataWithOptions:NSXMLNodePrettyPrint]; 
+0

Cảm ơn cho câu trả lời .. Tôi đã sửa đổi câu hỏi ban đầu một chút .. Nếu bạn sẽ được loại như vậy để cho tôi một gợi ý thêm về cách tôi thực sự có thể lưu vào NSData, tôi sẽ đánh giá rất cao. Tôi nên đã đề cập rằng trong câu hỏi ban đầu. Cảm ơn. – Kevin

+2

Tôi đã cập nhật câu trả lời của mình. Chỉnh sửa của bạn cho câu hỏi của bạn là chính xác, ngoại trừ việc bạn đang gọi 'XMLData' trên kết quả. Điều đó sẽ không hoạt động và không cần thiết, bởi vì đầu ra của 'XMLDataWithOptions:' là một đối tượng 'NSData' đã có, không phải là một đối tượng' NSXMLNode'. –

+0

Hoạt động tuyệt vời, cảm ơn rất nhiều Rob! – Kevin

Các vấn đề liên quan