Ios 无法使用NSXmlParser获取数据
我正在使用Ios 无法使用NSXmlParser获取数据,ios,iphone,nsxmlparser,Ios,Iphone,Nsxmlparser,我正在使用NSXmlParser从XML获取数据。在解析器委托方法中,我有: - (void)resetPassCallback: (NSData*) data{ NSLog(@"start parsing the data"); NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data]; [nsXmlParser setDelegate:self]; B
NSXmlParser
从XML
获取数据。在解析器委托方法中,我有:
- (void)resetPassCallback: (NSData*) data{
NSLog(@"start parsing the data");
NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data];
[nsXmlParser setDelegate:self];
BOOL success = [nsXmlParser parse];
if (success) {
NSLog(@"No errors %@", xmlArray);
} else {
NSLog(@"Error parsing document!");
}
}
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qualifiedName attributes: (NSDictionary *)attributeDict
{
element = elementName;
if([elementName isEqualToString:@"User"])
{
XmlDict = [[NSMutableDictionary alloc]init];
userId =[[NSMutableString alloc]init];
screenName =[[NSMutableString alloc]init];
xmlArray = [[NSMutableArray alloc]init];
}
}
虽然我能够解析数据,但我没有得到完整的数据。在控制台中,日志显示:
foundCharacters ::::: 200 ::::
foundCharacters ::::: f1f47453-04d7-20c8-a9e1-406fdc89a2da ::::
foundCharacters ::::: test ::::
foundCharacters ::::: 62e2092a-eb6e-44ad-7a7b-3deb976569c1 ::::
foundCharacters ::::: Thomas ::::
xmlArray contents : (
"62e2092a-eb6e-44ad-7a7b-3deb976569c1",
Thomas
)
如您所见,为什么我没有在
xmlArray
中获得“test”和其他值 我希望,每次调用NSXMLParser
委托时都会重新初始化数组
您需要在NSXMLParser委托之前初始化数组
打电话来
使用
xmlArray=[[NSMutableArray alloc]init]代码>输入
- (void)resetPassCallback: (NSData*) data{
NSLog(@"start parsing the data");
xmlArray = [[NSMutableArray alloc]init];
NSXMLParser *nsXmlParser = [[NSXMLParser alloc] initWithData:data];
[nsXmlParser setDelegate:self];
BOOL success = [nsXmlParser parse];
if (success) {
NSLog(@"No errors %@", xmlArray);
} else {
NSLog(@"Error parsing document!");
}
}
不在
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qualifiedName attributes: (NSDictionary *)attributeDict
{
}
为什么要使用可变数组。试试这个
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
NSLog(@"Processing Value: %@", currentElementValue);
}
发布完整的代码您是否正在修改任何其他解析器委托方法中的xmlArray
?
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *) namespaceURI qualifiedName:(NSString *)qualifiedName attributes: (NSDictionary *)attributeDict
{
}
- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string {
if(!currentElementValue)
currentElementValue = [[NSMutableString alloc] initWithString:string];
else
[currentElementValue appendString:string];
NSLog(@"Processing Value: %@", currentElementValue);
}