ios - 解析 XML 时的调试问题

标签 ios objective-c xml

我正在尝试像本教程一样解析一些数据:http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml并在“loadParty”方法中遇到了问题(查看教程)。在本教程中,XML 如下所示:

<Party>
<Player>
    <Name></Name>
    <Level></Level>
    <Class></Class>
    <HP></HP>
    <MaxHP></MaxHP> 
</Player>
</Party>

在解析这个时,这是有效的。但是当我在我的 xml 文件中添加更多播放器标签时,例如,删除标签“Level”:

<Party>
<Player>
    <Name></Name>
    <Level></Level>
    <Class></Class>
    <HP></HP>
    <MaxHP></MaxHP> 
</Player>
<Player>
    <Name></Name>
            // Level is removed here
    <Class></Class>
    <HP></HP>
    <MaxHP></MaxHP> 
</Player>
</Party>

那就不行了。我的解析器基于相同的教程,但变量名称不同。看看我的调试屏幕: 它说数字是 0x00,因为我的 XML 文件中没有数字标记...我该如何解决这个问题,因为我不希望我的 XML 完全相同。

http://i53.tinypic.com/280kw8z.png

我的 XML 是这样的:

   <app>
    <window ident="1" type="intro">
            <title></title>
            <subtitle></subtitle>
            <number></number>
   </window>
   <window ident="2" type="intro">
           <title></title>
           <subtitle></subtitle>
   </window>
   </app>

最佳答案

我找到了解决方案:

如果您查看本教程 http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml然后在 loadApp 方法中你得到了这个:

    // Name
NSArray *names = [partyMember elementsForName:@"Name"];
if (names.count > 0) {
    GDataXMLElement *firstName = (GDataXMLElement *) [names objectAtIndex:0];
    name = firstName.stringValue;
} else continue; // Remove this

// Level
NSArray *levels = [partyMember elementsForName:@"Level"];
if (levels.count > 0) {
    GDataXMLElement *firstLevel = (GDataXMLElement *) [levels objectAtIndex:0];
    level = firstLevel.stringValue.intValue;
} else continue; // Remove this 

问题是“否则继续;”你需要删除这部分,因为当他在XML中没有找到元素时,他会转到“else”然后继续,这意味着他将回到for循环的开头并且不会继续。如果你去掉“else continue;”,问题就解决了。

关于ios - 解析 XML 时的调试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15100419/

相关文章:

objective-c - NSArray getter 方法未返回正确的值

java - 使用标准 openStream 和 DocumentBuilder 的 utf-8

ios - 如何在 Objective-C 中将 AVAudioPCMBuffer 转换为 NSData?

ios - 哪种数据类型应该用于 iOS 中的长浮点值?

ios - UITableView didSelectRow 在错误的 Cell 上执行,即使 touchesCancelled 调用了包含自定义 UIScrollView 的自定义 UITableViewCell

ios - 如何确定 iOS 通讯录中 ABPerson 的最后修改日期?

java - 我的游戏需要数据库吗?

java - Spring MVC @RequestBody 用于 JAXB 域对象 接收到的 XML 的 XSLT 转换后

objective-c - Objective-C 中初始化对象的不同方式

ios - dispatch_get_main_queue 和 dispatch_get_global_queue 的区别