Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XML解析-iPhone_Iphone_Parsing_Xml Parsing_Nsxml - Fatal编程技术网

XML解析-iPhone

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>

你好,我是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>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>&lt;?xml version="1.0" encoding="UTF-8"?&gt;&lt;newblock&gt;&lt;name&gt;abcde
&lt;/name&gt;&lt;password&gt;12345678&lt;/password&gt;&lt;/newblock&gt;</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容易

  • 目标C中没有可替换<、>的内置函数。因此,您可能希望在服务器上封装该字符串
  • 尝试:-

     [string stringByReplacingOccurrencesOfString:@"&lt" withString:@"<"];
    

    [string stringByReplacingOccurrencesOfString:@“<”with string:@"谢谢。我已经试过了,但是我无法将字符串传递给解析器。我的意思是无法传递NSStrin对象。这会产生错误。我们必须只将NSData或NSMutableData对象传递给解析器。我从您的问题中理解的是,上面是您获得的xml数据,您正在解析的数据…所以我显然理解您无法传递ss字符串到解析器,并将NSData传递到解析器..但在解析时,xml将给出字符串,然后你可以使用我给出的上述函数..如果我对你的问题的解释有任何错误..那么我道歉并收回我的答案..但是我找到了你的链接。。
    
     [string stringByReplacingOccurrencesOfString:@"&lt" withString:@"<"];