调试问题解析XML
我试图解析这样的教程一些数据时:http://www.raywenderlich.com/725/how-to-read-and-write-xml-documents-with-gdataxml并在“loadParty”的方法跨越问题就来(看教程)。在教程中,XML看起来像这样:调试问题解析XML
<Party>
<Player>
<Name></Name>
<Level></Level>
<Class></Class>
<HP></HP>
<MaxHP></MaxHP>
</Player>
</Party>
而解析这个,这个工程。但是,当我加入我的XML文件中的一些球员更多的标签,例如,去掉标签“级别”:
<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>
然后它不工作。我的解析器基于相同的教程,但其他变量名称。看看我的调试屏幕: 它说的数字是0×00,因为我没有在我的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”,则问题得到解决。
我想检查零首先应该解决您的问题:
if (numbers != nil && numbers.size > 0) {...}
这没有奏效,它仍然是同样的问题。 – Shinonuma 2013-02-27 08:11:07
好的只是澄清,你的程序只是挂在if(numbers.size> 0),它永远不会通过这条线? – 2013-02-27 08:54:31
如果我在number.count> 0的行上设置了一个断点,它会一直运行到那里。如果我在GDataXMLElement * firstNumber =(GDataXMLElement *)[numbers objectAtIndex:0]上设置了一个断点,它不会再继续下去,并且在调试器视图中看不到任何东西。 – Shinonuma 2013-02-27 11:55:26
这是您使用的是真正的XML?我没有看到一个节点号码! – 2013-02-26 22:24:22
其从谷歌GDataXML类:https://code.google.com/p/gdata-objectivec-client/downloads/list – Shinonuma 2013-02-26 22:27:08
是OK,但你需要解析的XML是什么,是不是就像您在发布你的问题?你想从这个调用中得到什么[appMember elementsForName:@“number”]? – 2013-02-26 22:30:06