2012-10-08 111 views
0

這是我簡單的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解析器來完成它?謝謝!

回答

1

我在過去運行結果的正則表達式來擺脫這一點。

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