通过TBXML解析XML适用于演示项目,但它在我的实际项目中不起作用

时间:2011-10-27 16:51:52

标签: iphone xml-parsing iso tbxml

我真的需要帮助解析TBXML的XML。 我创建了一个带有视图按钮的演示项目,当用户按下此按钮时,我只是从另一个类调用TBXML解析函数。 我这样做是为了测试我的TBXMLParsing功能是否正常工作。它在我的演示项目中运行良好。

最后,在我测试之后,我将该功能复制并粘贴到我的真实项目中,该项目在第一个视图中有一个按钮,当我点击该按钮然后它调用TBXMLParsing函数。换句话说,它与演示项目基本相同。但是,TBXMLParsing功能不起作用。它无法遍历所有元素。

你有什么想法吗?谢谢你的帮助。

更新: 如果我在真实设备上模拟我的应用程序,它是有效的,但如果我在模拟器上模拟它,它不会遍历XML。太奇怪了。但是,如果我创建新项目,它确实可以在模拟器上运行。因此,我的应用程序中必定存在阻止解析器XML的内容。

有什么想法吗?谢谢

UPDATE2:

NSData *data = [[NSData alloc]initWithContentsOfURL:[NSURL URLWithString:@"http://dl.dropbox.com/u/37064335/ex.xml"]];

TBXML *tbxml = [[TBXML alloc] initWithXMLData:data];
[data release];
TBXMLElement *root = tbxml.rootXMLElement;

// if root element is valid
if (root) {
    NSLog(@"root =%s",root->name);

这部分搞砸了我。我在演示应用程序中测试过,Nslog root = GetUserAccountsRespond 但是在我的应用程序Nslog root =(nil-nothing打印出来)。这两个项目基本相同。

2 个答案:

答案 0 :(得分:4)

Ok这里有适合任何可能和我一样问题的人的解决方案。问题是因为当我分析(shift + command + B)我的项目时,xcode在TBXML.m中检测到一些“语义问题”。然后我按照xcode的指南在3个地方改变“=”到“==”,在TBXML.m中它说“Process XML”(line258,311和458)。因此TBXML不起作用,因为它无法处理输入XML。这个问题让我疯狂了2天。感谢Tom Bradley的TBXML

答案 1 :(得分:0)

我会检查您尝试解析的XML文档是否已正确加载,然后再将其传递到TBXML进行解码。听起来像是在SIM卡上加载代码有问题。尝试将文件内容输出到日志以验证其是否正确。