【问题标题】:TouchXML - CXMLDocument object failed to initializeTouchXML - CXMLDocument 对象未能初始化
【发布时间】:2010-12-31 04:30:59
【问题描述】:

我被一些 TouchXML 代码困住了。请帮忙。

我有以下代码从 xml 网络服务获取数据:

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) 

【问题讨论】:

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

标签: iphone cocoa-touch xml-parsing touchxml


【解决方案1】:

TouchXML's documentation 表示CXMLDocument 应该像NSXMLDocument 一样工作。所以,reference for initWithData:options:error: 可能会有所帮助。

它说如果不成功,结果将是nil,然后error 将包含更多信息。是nil吗?

你现在可以考虑使用NSXMLDocument,看看他们是否真的有同样的行为。如果没有,请使用 TouchXML 提交错误。

您还可以将 initWithXMLString:options:error: 与您已解码的字符串一起使用。

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

【讨论】:

  • 嗨 Kevin,NXMLDocument 在 iPhoneOS 中不可用,正如它在文档中所说:Foundation 框架通过 NSXMLParser 类提供对 XML 解析的支持。但是,其他 XML 解析类(包括 NSXMLDocument、NSXMLNode 和 NSXMLElement)在 iPhone OS 中不可用。除了 NSXMLParser 类,还可以使用 libXML2 库,它提供了基于 C 语言的 XML 解析接口。
  • 我已经尝试过 initWithXMLString 但没有运气,它给了我相同的 nil 对象。
猜你喜欢
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 2013-07-04
  • 2019-02-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多