Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/14.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
Objective c 目标c中的字符串替换操作_Objective C_Xml_Xcode_Xml Parsing - Fatal编程技术网

Objective c 目标c中的字符串替换操作

Objective c 目标c中的字符串替换操作,objective-c,xml,xcode,xml-parsing,Objective C,Xml,Xcode,Xml Parsing,我得到的结果是 <ZmaterialGroupList><Matkl>001</Matkl><Text>Metal processing</Text></ZmaterialGroupList> 001金属加工 当我应用字符串替换函数时,我需要得到001金属处理的结果,它给出了一个异常。请帮助我 从注释中添加代码: for(int i=0; i<[soapArray.items count]; i++) {

我得到的结果是

<ZmaterialGroupList><Matkl>001</Matkl><Text>Metal processing</Text></ZmaterialGroupList>
001金属加工
当我应用字符串替换函数时,我需要得到001金属处理的结果,它给出了一个异常。请帮助我

从注释中添加代码:

for(int i=0; i<[soapArray.items count]; i++) {
    NSString *str = [soapArray.items objectAtIndex:i];
    str = [str stringByReplacingOccurrencesOfString:@"<Matkl>" withString:@""];
}

for(inti=0;i您可能会更好地使用而不是尝试替换XML片段

如果您更新您的问题,使其包含更多解释代码的内容(特别是处理soapArray的代码),我应该能够更多地解释为什么您的代码不能正常工作


使用NSXMLParser 重要的是要记住,NSXMLParser只是按顺序读取您提供给它的数据,而不是使用DOM结构

安装程序 首先,您需要为解析器提供一些要分析的内容!在我的示例中,我从捆绑包中获取了一个资源,并将其转换为NSData。不过,还有另一个选项可以使用
initWithContentsOfURL
。请确保不要忘记设置您的委托

-(void) parse
{
    NSString *file = @"myXMLFile.xml";
    NSData *data = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:[file stringByDeletingPathExtension] ofType:[file pathExtension]]];
    //If you already have a string:
    //NSData* data=[xmlString dataUsingEncoding:NSUTF8StringEncoding];
    if (data.length == 0)
    {
        //No data
        return nil;
    }

    ...
}

NSXMLParser *parser = [[NSXMLParser alloc] initWithData:data];
parser.delegate = self;
[parser parse];
解析 完成 在完成后,最好检查没有出现任何错误并释放解析器内存。因此在
parse
方法中,在调用
[parser parse]
后添加此项

if ([parser parserError] != nil)
{
    [[[[UIAlertView alloc] initWithTitle:@"Error parsing XML" message:[[parser parserError] localizedDescription] delegate:nil cancelButtonTitle:@"Done" otherButtonTitles:nil] autorelease] show];
}
[parser release];

考虑使用XML解析器,或者可以使用
NSScanner

例如:

NSString *wanted;
NSString *fullMessage;
NSString *xml = @"<ZmaterialGroupList><Matkl>001</Matkl><Text>Metal processing</Text></ZmaterialGroupList>";
NSScanner *scanner = [NSScanner scannerWithString:xml];

[scanner scanUpToString:@"<Matkl>" intoString:nil];
[scanner scanString:@"<Matkl>" intoString:nil];
[scanner scanUpToString:@"</Matkl>" intoString:&wanted];
fullMessage = wanted;

[scanner scanUpToString:@"<Text>" intoString:nil];
[scanner scanString:@"<Text>" intoString:nil];
[scanner scanUpToString:@"</Text>" intoString:&wanted];
fullMessage = [fullMessage stringByAppendingFormat:@" %@", wanted];

NSLog(@"fullMessage: '%@'", fullMessage);
NSString*需要;
NSString*完整消息;
NSString*xml=@“001金属加工”;
NSScanner*scanner=[NSScanner scannerWithString:xml];
[扫描程序扫描字符串:@“intoString:nil];
[扫描仪扫描字符串:@“intoString:nil];
[扫描仪扫描字符串:@“intoString:&需要];
fullMessage=需要;
[扫描程序扫描字符串:@“intoString:nil];
[扫描仪扫描字符串:@“intoString:nil];
[扫描仪扫描字符串:@“intoString:&需要];
fullMessage=[fullMessage stringByAppendingFormat:@“%@”,需要];
NSLog(@“fullMessage:'%@'”,fullMessage);
NSLog输出:

fullMessage:“001金属加工”

请发布您已经拥有的代码和更多输入示例(int i=0;iI将注释代码放入问题中,并重新格式化问题,以便正确显示原始xml。您是如何填充soapArray的?其中包含什么内容?在您添加的注释代码中,str的值未保存。错误到底是什么,发生在哪一行。原因是什么(int i=0;i当我尝试以这种方式执行此操作时,由于未捕获的异常“NSInvalidArgumentException”,我在终止应用程序时遇到异常,进入变量str isstr的结果是:“001Metal processing”,但接下来我遇到异常。这是解析字符串的示例,这是最初的问题。如果您尝试使用示例co在循环中执行de您必须调整代码并确保字符串有效,这与解析模式匹配。考虑到循环,这可能不是进行解析的最佳方式。请解释一下如何使用NSXMLParse。我没有任何xml文件,但我得到的结果是xml格式的,然后如何解析。我已经更新了我的答案。看一看在代码的第一部分。
NSString *wanted;
NSString *fullMessage;
NSString *xml = @"<ZmaterialGroupList><Matkl>001</Matkl><Text>Metal processing</Text></ZmaterialGroupList>";
NSScanner *scanner = [NSScanner scannerWithString:xml];

[scanner scanUpToString:@"<Matkl>" intoString:nil];
[scanner scanString:@"<Matkl>" intoString:nil];
[scanner scanUpToString:@"</Matkl>" intoString:&wanted];
fullMessage = wanted;

[scanner scanUpToString:@"<Text>" intoString:nil];
[scanner scanString:@"<Text>" intoString:nil];
[scanner scanUpToString:@"</Text>" intoString:&wanted];
fullMessage = [fullMessage stringByAppendingFormat:@" %@", wanted];

NSLog(@"fullMessage: '%@'", fullMessage);