【问题标题】:Unable to Parse following XML?无法解析以下 XML?
【发布时间】:2012-06-14 00:37:05
【问题描述】:

我有img id="#"的连续标签,其中#从1到9不等。

标签的描述由浮动值组成。

当我使用标准的 NSXML 解析器时,我没有得到所有的值。

我的 XML 供参考:

<img id="1">-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,

            -0.0370875,0.0862391,0.0970791,-0.0195908,

            -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,

             0.0253036,-0.0770325,0.14065,0.118424,0.1787,

             0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,

             0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,

             -0.0280366,0.106239,0.052094,0.110642,   

</img>

我将如何解析上述 XML?

请帮帮我。

感谢

【问题讨论】:

  • 你的代码在哪里?向我们展示您的尝试。
  • 另外,请说明您可以从您的代码中获得哪些价值。
  • @MattBall 在尝试了以下答案后,我一定会发布我的全部答案以获得解决方案或作为其他人的参考。
  • @MattBall 将在下次发布任何问题时记录建议
  • @ShivanRaptor 会在下次发布任何问题时记录建议

标签: iphone objective-c ios xml-parsing nsxmlparser


【解决方案1】:

这是因为parser:foundCharacters: 不会同时传递所有字符。您需要连接在 parser:didStartElement:namespaceURI:qualifiedName:attributes:parser:didEndElement:namespaceURI:qualifiedName: 的回调之间获得的所有字符串,您为 &lt;img&gt; 标记获得。

在下面的代码中,buf 是您的解析器委托的 NSMutableString ivar。

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
    if ([qualifiedName isEqualToString:@"img"]) {
        buf = [NSMutableString string];
    }
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
    if ([qualifiedName isEqualToString:@"img"]) {
        buf = [buf stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
        NSLog(@"Got %@", buf);
    }
}

- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [buf appendString:string];
}

【讨论】:

    【解决方案2】:

    终于明白了...我为 img id = '#' 放置了开始和结束标签。我的结构现在看起来像这样:

    <images>
    
        <img id = '1'> -0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,
    
            -0.0370875,0.0862391,0.0970791,-0.0195908,
    
            -0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,
    
             0.0253036,-0.0770325,0.14065,0.118424,0.1787,
    
             0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,
    
             0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,
    
             -0.0280366,0.106239,0.052094,0.110642, ....  
    
         </img>
    
         <img id = '2'> ... 
    
         </img>
    
       ....
    
       ....
    
    </images>
    
    <mapping>
    
      <map>
        <imgid> 1 </imgid>
        <keyword> heavy </keyword>
    
      </map>
    
      <map>
        <imgid> 2 </imgid>
        <keyword> metal </keyword>
    
      </map>
    
      ...
    
      ...
    
    </mapping>
    

    放置开始和结束标签让我可以解析整个 xml。

    之前,开始和结束标签用于单个图像,仅导致解析一个 img。

    这让我在解析 XML 时又添加了一个关键点。

    希望这对其他人也有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-06
      • 2013-06-28
      • 2011-11-13
      • 1970-01-01
      相关资源
      最近更新 更多