我从服务器加载XML响应,并使用NSXMLParser进行解析。模拟器中没有错误。但显示的是NSXMLParserErrorDomain Code=5 in iPhone。
NSString *settings = "http://website.com/settings";
NSURL *url = [NSURL URLWithString:settings];
NSXMLParser *xmlParser = [[NSXMLParser alloc] initWithContentsOfURL:url];
xmlParser.delegate = self;
BOOL success = [xmlParser parse];
if(success)
{
NSLog(@"Parse Success");
}else{
NSLog(@"Parse Failure");
NSLog(@"Parse Error: %@",[xmlParser parserError]);
}XML响应
<?xml version="1.0" encoding="utf-8"?>
<Settings>
<AutoRefereshTime>10</AutoRefereshTime>
<CashierPasswordRequired>Y</CashierPasswordRequired>
<CheckoutTableColor>#FFFF00</CheckoutTableColor>
<CompanyLogo>http://website.com/UCS_WS/Images/Logo/Logo.png</CompanyLogo>
<CompanyName>UnoRestaurant</CompanyName>
<ConfirmedTableColor>008ED5</ConfirmedTableColor>
<Description>The Great Indian Restaurant</Description>
<DevelopedBy>Unipro</DevelopedBy>
<HoldTableColor>A02325</HoldTableColor>
<ImageURL>http://rwebsite.com/UCS_WS/Images/Dish/</ImageURL>
<isCategoryEnabled>Y</isCategoryEnabled>
<isOtherLanguageEnabled>Y</isOtherLanguageEnabled>
<NormalTableColor>#0000FF</NormalTableColor>
<OrderScreenView>POS View</OrderScreenView>
<OtherLanguage>Tamil</OtherLanguage>
<SharedTableColor>#00FFFF</SharedTableColor>
</Settings>解析错误:
Error Domain=NSXMLParserErrorDomain Code=5 "The operation couldn’t be completed. (NSXMLParserErrorDomain error 5.)"发布于 2013-08-14 11:35:11
请参阅@mobibob here==> What is the meaning of NSXMLParserErrorDomain error 5.?给出的答案。
根据戴夫DeLong的说法
这意味着它在解析您的文件时有问题。
我认为它可能是XML中的XSLT引用--因为它指向may服务器。我会检讨这个问题,并提出一个更好的答案。
这是文件的路径。我的代码甚至没有接近正确的位置--而且我漏掉了一个尾随字母's‘。错误代码定义意味着“文件的过早结束”,这导致我截断我的文件,但没有成功。然后,我回到基础上,在文件系统上进行迭代以查找我的文件。
我通过使用NSFileManager对我的文件进行迭代来进行调试,然后验证它是否可以用contentsAtPath方法加载。我能够用NSLog()转储它。一旦我确信该文件格式良好并以原始形式加载,我就确定我的NSURL是用相同的语法和方法构造的。然后正确装载。现在,我可以加载网络文件“全功能”内容或本地“示例”内容。
NSDirectoryEnumerator *dirEnumerator = [[NSFileManager defaultManager] enumeratorAtPath: NSHomeDirectory()];
NSString *something;
NSString *f;
while( something = [dirEnumerator nextObject] ) {
f = [[[NSString alloc] initWithFormat: @"%@/%@", NSHomeDirectory(), something] autorelease];
if( [f hasSuffix :@"two_cookies.xml"] ){
NSData *nsData = (NSData*) [[NSFileManager defaultManager] contentsAtPath: f];
NSLog(@"%@", nsData );
}
}输出
2009年-10-22 00:47:40.147 MyApp13843:20 b
https://stackoverflow.com/questions/18230185
复制相似问题