Iphone 无法分析以下XML?
我有连续的Iphone 无法分析以下XML?,iphone,objective-c,ios,xml-parsing,nsxmlparser,Iphone,Objective C,Ios,Xml Parsing,Nsxmlparser,我有连续的img id=“#”,其中#从1到9不等 标记的描述由浮动值组成 当我使用标准的NSXML解析器时,我没有得到所有的值 我的XML供参考: <img id="1">-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431, -0.0370875,0.0862391,0.0970791,-0.0195908, -0.00892297,0.0791795,0.0554013,0.003
img id=“#”
,其中#
从1到9不等
标记的描述由浮动值组成
当我使用标准的NSXML解析器时,我没有得到所有的值
我的XML供参考:
<img id="1">-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,
-0.0370875,0.0862391,0.0970791,-0.0195908,
-0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,
0.0253036,-0.0770325,0.14065,0.118424,0.1787,
0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,
0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,
-0.0280366,0.106239,0.052094,0.110642,
</img>
-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,
-0.0370875,0.0862391,0.0970791,-0.0195908,
-0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,
0.0253036,-0.0770325,0.14065,0.118424,0.1787,
0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,
0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,
-0.0280366,0.106239,0.052094,0.110642,
如何解析上述XML
请帮帮我
Thanx这是因为
解析器:foundCharacters:
不会一次传递所有字符。您需要将为
标记获得的解析器:didStartElement:namespaceURI:qualifiedName:attributes:
和解析器:didEndElement:namespaceURI:qualifiedName:
回调之间的所有字符串连接起来
在下面的代码中,buf
是解析器委托的NSMutableString
ivar
- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qualifiedName attributes:(NSDictionary *)attributeDict {
if ([qualifiedName isEqualToString:@"img"]) {
buf = [NSMutableString string];
}
}
- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName {
if ([qualifiedName isEqualToString:@"img"]) {
buf = [buf stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"Got %@", buf);
}
}
- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
[buf appendString:string];
}
终于明白了。。。我为img id='#'放置了开始和结束标记。我的结构现在如下所示:
<images>
<img id = '1'> -0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,
-0.0370875,0.0862391,0.0970791,-0.0195908,
-0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,
0.0253036,-0.0770325,0.14065,0.118424,0.1787,
0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,
0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,
-0.0280366,0.106239,0.052094,0.110642, ....
</img>
<img id = '2'> ...
</img>
....
....
</images>
<mapping>
<map>
<imgid> 1 </imgid>
<keyword> heavy </keyword>
</map>
<map>
<imgid> 2 </imgid>
<keyword> metal </keyword>
</map>
...
...
</mapping>
-0.0111328,-0.0635608,0.152549,0.11211,-0.0250431,
-0.0370875,0.0862391,0.0970791,-0.0195908,
-0.00892297,0.0791795,0.0554013,0.00362028,0.0138572,0.0432729,
0.0253036,-0.0770325,0.14065,0.118424,0.1787,
0.0734354,0.160883,0.101831,0.237038,0.0681151,0.178331,
0.106532,0.224731,0.133766,0.222096,0.165214,0.240752,
-0.0280366,0.106239,0.052094,0.110642, ....
...
....
....
1.
沉重的
2.
金属
...
...
放置开始和结束标记使我能够解析整个xml
之前,开始和结束标记是针对单个图像的,这只导致对一个img进行解析
这使我在解析XML时添加了另一个关键点
希望这对其他人也有帮助。您的代码在哪里?向我们展示您尝试过的内容。另外,请展示您能够从代码中获得的值。@MattBall在尝试以下答案后,我一定会发布我的全部答案,或者是为了得到解决方案,或者是作为其他人的参考。@MattBall将在下一次发布任何建议时记下这些建议question@ShivanRaptor下次发布任何问题时,将记录建议