解析复杂的XML字符串(RXML)

问题描述:

这是我简单的XML字符串:解析复杂的XML字符串(RXML)

<rss> 
<channel> 
    <item> 
    <title>ITEM TITLE</title> 
    <description> 
    &lt;i&gt;Att1 &lt;/i&gt;10, &lt;i&gt;Att2 &lt;/i&gt;20, &lt;i&gt;Att3 &lt;/i&gt;30 
    </description> 
    </item> 
    <item> 
    ... 
    </item> 
    ... 
</channel> 
</rss> 

有了这个RXML代码,我可以分析整个< description>标记:

RXMLElement *rxmlRoot = [RXMLElement elementFromURL:[NSURL URLWithString:@"MY_XML_URL]]; 
    RXMLElement *firstLevel = [rxmlRoot child:@"channel"]; 
    NSArray *secondLevel = [firstLevel children:@"item"]; 
    [rxmlRoot iterateElements:secondLevel usingBlock:^(RXMLElement *appElement) { 
     NSString *description = [appElement child:@"description"].text; 

而且它的完美!所解析*描述字符串是: “< I> ATT1 </i>的10,< I> ATT2 </i>的20,< I> ATT3 </i>的30”

但我想解析单独值的Att1,Att2和Att3;我需要推断单个值10,20和30,不幸在同一个标​​签中。这是可能的?有一种方法可以用RXML或XCode的另一个xml解析器来完成它?谢谢!

我在过去运行结果的正则表达式来摆脱这一点。

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"< i>Att[0-9]< /i>" 
                     options:NSRegularExpressionCaseInsensitive 
                     error:nil]; 

[regex replaceMatchesInString:description 
         options:0 
         range:NSMakeRange(0, description.length) 
       withTemplate:@""]; 

如果您的数据格式不相同,也有可以去掉html标签的库。

+0

谢谢尼克,我还有其他一些小问题,但肯定这是解析类似数据的好起点! – Huxley