iOS – XML漂亮的打印

我在我的iOS应用程序中使用GDataXML,并想要一个简单的方法来格式化和打印一个XMLstring – “漂亮的打印”

有没有人知道Objective C中的一个algorithm,还是一个能够翻译成另一种语言的algorithm?

我已经使用HTML Tidy(http://tidy.sourceforge.net/)这样的东西。 这是一个C库,所以只要你对C熟悉,就可以很容易地连接到Objective C运行库并从中调用.C ++ API可以从Objective C ++中调用,所以如果你愿意的话可以更容易使用Objective C ++。

我没有使用C或C ++绑定; 我通过Ruby或Python做到了,但它们都是相同的库。 它将读取直接的XML(以及可能的脏HTML),它有简单和漂亮的打印选项。

您可以直接修改GDataXMLNode的源代码:

- (NSString *)XMLString { ... // enable formatting (pretty print / beautifier) int format = 1; // changed from 0 to 1 ... } 

替代scheme:

由于我不想直接修改图书馆(出于维护的原因),我写了这个类别来扩展课程:

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