- "oldukça print"iOS - XML Pretty Baskı
herkes Objective C bir algoritma biliyor mu, yoksa bir tane o Başka bir dilde çeviri yapabilir miyim?
- "oldukça print"iOS - XML Pretty Baskı
herkes Objective C bir algoritma biliyor mu, yoksa bir tane o Başka bir dilde çeviri yapabilir miyim?
Bunun gibi şeyler için HTML Tidy (http://tidy.sourceforge.net/) kullanmıştım. C kütüphanesi bu yüzden C ile rahat bir şekilde bir Objective C çalışma zamanına bağlanabilir ve çağrılabilir. C++ API Objective C++ ile uyumludur; Amaç C++.
C veya C++ bağlamaları kullanmadım; Ruby ya da Python ile yaptım ama hepsi aynı lib. Düz XML (potansiyel olarak kirli HTML'nin yanı sıra) okuyacaktır ve hem basit hem de güzel yazdırma seçeneklerine sahiptir.
Sen direcly GDataXMLNode kaynak kodunu değiştirebilirsiniz:
- (NSString *)XMLString {
...
// enable formatting (pretty print/beautifier)
int format = 1; // changed from 0 to 1
...
}
Alternatif: I (bakım nedeniyle) doğrudan kütüphane değiştirmek istemiyordu gibi
, ben kategori genişletmek için yazdı dışarıdan sınıfı:
GDataXMLNode + PrettyFormatter.h:
#import "GDataXMLNode.h"
@interface GDataXMLNode (PrettyFormatter)
- (NSString *)XMLStringFormatted;
@end
GDataXMLNode + PrettyFormatter.m:
#import "GDataXMLNode+PrettyFormatter.h"
@implementation GDataXMLNode (PrettyFormatter)
- (NSString *)XMLStringFormatted {
NSString *str = nil;
if (xmlNode_ != NULL) {
xmlBufferPtr buff = xmlBufferCreate();
if (buff) {
xmlDocPtr doc = NULL;
int level = 0;
// enable formatting (pretty print/beautifier)
int format = 1;
int result = xmlNodeDump(buff, doc, xmlNode_, level, format);
if (result > -1) {
str = [[[NSString alloc] initWithBytes:(xmlBufferContent(buff))
length:(xmlBufferLength(buff))
encoding:NSUTF8StringEncoding] autorelease];
}
xmlBufferFree(buff);
}
}
// remove leading and trailing whitespace
NSCharacterSet *ws = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmed = [str stringByTrimmingCharactersInSet:ws];
return trimmed;
}
@end