XML解析-iPhone
你好,我是iPhone开发新手。 我创建了一个使用web服务数据的应用程序。它工作正常,但我在解析方面有问题 我从web服务获得的xml数据是:XML解析-iPhone,iphone,parsing,xml-parsing,nsxml,Iphone,Parsing,Xml Parsing,Nsxml,你好,我是iPhone开发新手。 我创建了一个使用web服务数据的应用程序。它工作正常,但我在解析方面有问题 我从web服务获得的xml数据是: <div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> <h4>A PHP Error was encountered</h4> <p>Severity: Warning</p> <p>
<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: session_start() [<a href='function.session-start'>function.session-tart</a>]:
Cannot send session cookie - headers already sent by (output started at D:\xampp\htdocs\system
\application\controllers\isignin.php:4)</p>
<p>Filename: libraries/session.php</p>
<p>Line Number: 146</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: session_start() [<a href='function.session-start'>function.session-start</a>]: Cannot send session cache limiter - headers already sent (output started at D:\xampp\htdocs\6d\system \application\controllers\isignin.php:4)</p>
<p>Filename: libraries/session.php</p>
<p>Line Number: 146</p>
</div><div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;">
<h4>A PHP Error was encountered</h4>
<p>Severity: Warning</p>
<p>Message: Cannot modify header information - headers already sent by (output started at D:\xampp\htdocs\6d\system\application\controllers\isignin.php:4)</p>
<p>Filename: codeigniter/Common.php</p>
<p>Line Number: 360</p>
</div><?xml version="1.0" encoding="utf-8"?>
<xml><item><?xml version="1.0" encoding="UTF-8"?><newblock><name>abcde
</name><password>12345678</password></newblock></item></xml>
以下是使用的解析方法:
-(void) parser:(NSXMLParser *) parser
didStartElement:(NSString *) elementName
namespaceURI:(NSString *) namespaceURI
qualifiedName:(NSString *) qName
attributes:(NSDictionary *) attributeDict {
if( [elementName isEqualToString:@"GetWeatherResult"])
{
if (!soapResults)
{
soapResults = [[NSMutableString alloc] init];
}
elementFound = YES;
}
}
-(void)parser:(NSXMLParser *) parser foundCharacters:(NSString *)string
{
if (elementFound)
{
[soapResults appendString: string];
}
}
-(void)parser:(NSXMLParser *)parser
didEndElement:(NSString *)elementName
namespaceURI:(NSString *)namespaceURI
qualifiedName:(NSString *)qName
{
if ([elementName isEqualToString:@"GetWeatherResult"])
{
//---displays the country---
NSLog(soapResults);
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle:@"Current Temperature!"
message:soapResults
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
[soapResults setString:@""];
elementFound = FALSE;
}
}
我的问题是:
我想从收到的XML数据中提取值为“abcde”的“name”标记。但是,当我在收到的上述xml数据中搜索值为“abcde”的“name”时,解析器无法找到它,因为&qt、<等原因 1) 如何修复NSMutableData使其具有正常值(等)?NSMutableData的任何内置函数是否可以用替换<、>? 或
2) 在服务器端生成xml数据时是否缺少(或做错)任何东西,或者在客户端(iPhone上)解析时是否缺少任何东西 或
3) 解决上述问题的任何其他解决方案
提前感谢。我建议您使用TBXML库,它非常小,性能非常好。它也很容易掌握,至少比NSXMLParser、IMHO容易
[string stringByReplacingOccurrencesOfString:@"<" withString:@"<"];
[string stringByReplacingOccurrencesOfString:@“<”with string:@"谢谢。我已经试过了,但是我无法将字符串传递给解析器。我的意思是无法传递NSStrin对象。这会产生错误。我们必须只将NSData或NSMutableData对象传递给解析器。我从您的问题中理解的是,上面是您获得的xml数据,您正在解析的数据…所以我显然理解您无法传递ss字符串到解析器,并将NSData传递到解析器..但在解析时,xml将给出字符串,然后你可以使用我给出的上述函数..如果我对你的问题的解释有任何错误..那么我道歉并收回我的答案..但是我找到了你的链接。。
[string stringByReplacingOccurrencesOfString:@"<" withString:@"<"];