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

时间:2012-10-08 16:16:19

标签: xml xcode parsing

这是我简化的XML字符串:

<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代码,我可以解析整个&lt;描述&GT;标记:

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;

它的完美!解析的*描述字符串是:“&lt; i&gt; Att1&lt; / i&gt; 10,&lt; i&gt; Att2&lt; / i&gt; 20,&lt; i&gt; Att3&lt; / i&gt; 30”

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

1 个答案:

答案 0 :(得分: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标记。