Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/26.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 使用NSXMLParser解析XML文件_Objective C_Xml_Cocoa_String_Parsing - Fatal编程技术网

Objective c 使用NSXMLParser解析XML文件

Objective c 使用NSXMLParser解析XML文件,objective-c,xml,cocoa,string,parsing,Objective C,Xml,Cocoa,String,Parsing,我必须使用NSXMLParser解析XML文件。它们中有很多HTML标记,所以当我试图解析它时,它会将字符串存储到那个位置,然后再次转到find character方法并开始附加它。 我的代码是: if (Bio_CResults) { [BioResults appendString: string]; [Info appendString:string]; [stringarr addobject:Info]; NSLog(@"bio==%@",BioRes

我必须使用NSXMLParser解析XML文件。它们中有很多HTML标记,所以当我试图解析它时,它会将字符串存储到那个位置,然后再次转到find character方法并开始附加它。 我的代码是:

if (Bio_CResults) {
    [BioResults appendString: string];
    [Info appendString:string];

    [stringarr addobject:Info];
    NSLog(@"bio==%@",BioResults);
    NSLog(@"string==%@",string);
}
我想把它添加到字符串数组中,但在这里,它将创建数组的额外对象。i、 e

stringarr objectAtIndex 0 = abc
stringarr objectAtIndex 1 = def
stringarr objectAtIndex 2 = ghi
但实际上我想把它们放在一个对象中,因为它们实际上只是一个字符串。。
请帮助我,如果你甚至不需要多个字符串对象,你可以使用数组而不是数组。只需使用
appendString:
方法添加到字符串末尾:

NSMutableString *string = [NSMutableString string];
[string appendString:@"abc"];
[string appendString:@"def"];
NSLog(@"New string is %@", string);
这将记录“新字符串为abcdef”


如果确实需要阵列,请使用NSMutableArray而不是NSArray。通过这种方式,您可以就地更改对象(将字符串替换为通过追加另一个字符串创建的新字符串)。例如:

// First create an array with @"abc"
NSMutableArray *mArray = [NSMutableArray arrayWithObject:@"abc"];

// Next get the first object as a string and append @"def" to it in-place
NSString *string = (NSString *)[mArray objectAtIndex:0];
[mArray replaceObjectAtIndex:0 withObject:[string stringByAppendingString:@"def"]];

// Now get the new first object
NSLog(@"First object is %@", (NSString *)[mArray objectAtIndex:0]);

这将记录消息“第一个对象是abcdef”。

如果您甚至不需要多个字符串对象,您可以使用一个而不是一个数组。只需使用
appendString:
方法添加到字符串末尾:

NSMutableString *string = [NSMutableString string];
[string appendString:@"abc"];
[string appendString:@"def"];
NSLog(@"New string is %@", string);
这将记录“新字符串为abcdef”


如果确实需要阵列,请使用NSMutableArray而不是NSArray。通过这种方式,您可以就地更改对象(将字符串替换为通过追加另一个字符串创建的新字符串)。例如:

// First create an array with @"abc"
NSMutableArray *mArray = [NSMutableArray arrayWithObject:@"abc"];

// Next get the first object as a string and append @"def" to it in-place
NSString *string = (NSString *)[mArray objectAtIndex:0];
[mArray replaceObjectAtIndex:0 withObject:[string stringByAppendingString:@"def"]];

// Now get the new first object
NSLog(@"First object is %@", (NSString *)[mArray objectAtIndex:0]);

这将记录消息“第一个对象是abcdef”。

我真的不喜欢NSXmlParser。您可能想阅读我关于使用RegxKitLite的博客文章

这可能会有所帮助。希望它不会把你引向错误的方向


干杯,约翰。

我真的不喜欢你。您可能想阅读我关于使用RegxKitLite的博客文章

这可能会有所帮助。希望它不会把你引向错误的方向

干杯,约翰

里面有很多HTML标签

请注意,HTML通常不是有效的XML。如果您正在解析HTML,XML解析器将在文档的某些部分抛出错误

您最好创建一个WebView,将HTML内容加载到其中,然后从视图的主框架获取一个DOMDocument并遍历DOM层次结构。您不必将视图放到窗口中;你可以用它来获取一个文档

如果您正在解析XML并打算说“XML标记”,那么您可以忽略这个答案

里面有很多HTML标签

请注意,HTML通常不是有效的XML。如果您正在解析HTML,XML解析器将在文档的某些部分抛出错误

您最好创建一个WebView,将HTML内容加载到其中,然后从视图的主框架获取一个DOMDocument并遍历DOM层次结构。您不必将视图放到窗口中;你可以用它来获取一个文档


如果您正在解析XML并打算说“XML标记”,那么您可以忽略这个答案。

我认为他已经在尝试使用可变数组,我猜“addobject:”只是他的问题中的一个输入错误。他还使用了“appendString:”,所以我根本不知道他想用可变数组实现什么。:-)可能问题在于他添加的是对象,而不是调用replaceObjectAtIndex:withObject:?我认为他调用appendString:on的两个可变字符串是他用来存储XML解析器(来自parser:foundCharacters:method)数据的字符串,他只是将它们添加到数组中,而不是替换它们的旧对应项。不管怎样,答案都是:)我想他已经在尝试使用可变数组了,我猜“addobject:”只是他的问题中的一个输入错误。他还使用了“appendString:”,所以我根本不知道他想用可变数组实现什么。:-)可能问题在于他添加的是对象,而不是调用replaceObjectAtIndex:withObject:?我认为他调用appendString:on的两个可变字符串是他用来存储XML解析器(来自parser:foundCharacters:method)数据的字符串,他只是将它们添加到数组中,而不是替换它们的旧对应项。不管怎样,答案都是:)