2009-12-30 107 views
0

我被一些TouchXML代码卡住了。请帮忙。TouchXML - CXMLDocument对象未能初始化

我有以下代码从一个XML Web服务中的数据:

NSData *urlData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error]; 


NSString *data = [[NSString alloc] initWithData:urlData encoding:NSUTF8StringEncoding]; 

NSLog(@"String data: %@ \n", data); 

//Do the parsing 

CXMLDocument *document = [[[CXMLDocument alloc] initWithData:urlData encoding:NSUTF8StringEncoding options:0 error:&error] autorelease]; 
NSLog (@"Document :%@ \n",[document stringValue]); 

字符串数据确实有从服务的内容,但怎么来的CXMLDocument对象不包含什么?有人可以告诉我为什么?

2009-12-30 18:21:59.467 MyAdvancedBlog[3425:207] String data: <?xml version="1.0" encoding="utf-8"?> 

<Post xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"> 
    <IdPostazione>42</IdPostazione> 
    <StringID>HOANG</StringID> 
    <Name>CASSA2</Name> 
    <TerminalValid>true</TerminalValid> 
    <NeedSession>false</NeedSession> 
</Post> 

2009-12-30 18:21:59.469 MyAdvancedBlog[3425:207] Document :(null) 
+0

你打电话后'error'的值是多少?如果它不为零,它可能会指向正确的方向。 –

+0

错误是(null):-s –

回答

2

TouchXML's documentationCXMLDocument应该采取行动,就像NSXMLDocument。所以,reference for initWithData:options:error:可能会有所帮助。

它说结果将是nil,如果它不成功,并且error将包含更多信息。是nil

你可能会考虑暂时使用NSXMLDocument,看看他们是否真的采取相同的行动。如果他们不这样做,请使用TouchXML提交错误。

您也可以使用initWithXMLString:options:error:以及您已解码的字符串。

编辑:更好。这里的example code使用NSXMLDocument。理论上,它也适用于CXMLDocument

+0

嗨Kevin,NXMLDocument在iPhoneOS中不可用,正如它在文档中所述:Foundation框架通过NSXMLParser类提供对XML解析的支持。但是,其他XML解析类(包括NSXMLDocument,NSXMLNode和NSXMLElement)在iPhone OS中不可用。除了NSXMLParser类之外,您还可以使用libXML2库,它提供了一个基于C的XML解析接口。 –

+0

我已经尝试过initWithXMLString,但没有运气,它给了我相同的零对象。 –