用于格式化XML的Objective-c类或框架

用于格式化XML的Objective-c类或框架,objective-c,xml,Objective C,Xml,是否有任何Objective-c类或“带有实用程序类的框架”可以将块中接收的XML整理成可读的缩进XML 以前 <Modules><Module><Description>Equities</Description><ModuleId>4</ModuleId></Module><Module><Description>Fleets</Description><Module

是否有任何Objective-c类或“带有实用程序类的框架”可以将块中接收的XML整理成可读的缩进XML

以前

<Modules><Module><Description>Equities</Description><ModuleId>4</ModuleId></Module><Module><Description>Fleets</Description><ModuleId>2</ModuleId></Module><Module><Description>Futures</Description><ModuleId>5</ModuleId></Module><Module><Description>News</Description><ModuleId>1</ModuleId></Module><Module><Description>Podcasts</Description><ModuleId>7</ModuleId></Module><Module><Description>Time series</Description><ModuleId>3</ModuleId></Module><Module><Description>Clients</Description><ModuleId>13</ModuleId></Module><Module><Description>Seanet</Description><ModuleId>10</ModuleId></Module><Module><Description>S and P</Description><ModuleId>6</ModuleId></Module><Module><Description>Drycargo</Description><ModuleId>9</ModuleId></Module><Module><Description>Tankers</Description><ModuleId>8</ModuleId></Module><Module><Description>MarketLine</Description><ModuleId>11</ModuleId></Module></Modules>
Equities 4车队2未来5新闻1预测时间系列3客户13海运和干散货9油轮8市场线11
之后


股票
4.
舰队
2.
...

干杯

您可以使用它来解析文档并自己设置格式。在NSXMLParserDelegate中,保留一个ivar
级别
,指示当前所需的级别或缩进。每次解析器解析一个新的开始标记时,将其增加1,当它遇到结束标记时,将其减少1。然后,您所要做的就是创建一个XML解析器,并在解析后的节点前面添加适当数量的空格。

非常简单的XML解析器重写描述方法执行完全缩进

SMXMLDocument*document=[smxmldocumentdocumentwithdata:data error:&error];
NSLog(@“%@”,文件);
109
3.15
BCI
2012-09-04T13:09:13

我认为在任何脚本语言甚至C语言上编写这样的程序最多需要30分钟。不是吗?据我所知不是这样,但您可以尝试使用NSXMLParser和NSMutableString来重建带有换行/缩进的xml。如果元素使用相同的元素背靠背调用
beginparseelement
endparseelement
,则可以知道缩进级别
<Modules>
    <Module>
        <Description>Equities</Description>
        <ModuleId>4</ModuleId>
    </Module>
    <Module>
        <Description>Fleets</Description>
        <ModuleId>2</ModuleId>
    </Module>
...
</Modules>
SMXMLDocument *document = [SMXMLDocument documentWithData:data error:&error];

NSLog(@"%@",document);


<IndexPrices>
  <Index>
    <Change>109</Change>
    <ChangePercentage>3.15</ChangePercentage>
    <Description i:nil="true"/>
    <IndexCode>BCI</IndexCode>
    <IndexDate>2012-09-04T13:09:13</IndexDate>