我的XML页面如下所示:
<announcement>
<body>
...然后有许多标签跟着
<files>
<images originalSize="101554" id="4641530">
<description>Ласковый покалеченный приютский пёс Федя в дар.</description>
<image id="21126492" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126492.jpg" name="first" width="56" height="56"/>
<image id="21126493" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126493.jpg" name="prev" width="103" height="77"/>
<image id="21126494" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126494.jpg" name="prev_card" width="158" height="124"/>
<image id="21126495" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126495.jpg" name="middle" width="462" height="348"/>
<image id="21126496" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126496.jpg" name="default" width="640" height="482"/>
</images>
<images originalSize="146409" id="4641531">
<description>Ласковый покалеченный приютский пёс Федя в дар.</description>
<image id="21126497" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126497.jpg" name="first" width="56" height="56"/>
<image id="21126498" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126498.jpg" name="prev" width="103" height="77"/>
<image id="21126499" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126499.jpg" name="prev_card" width="158" height="124"/>
<image id="21126500" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126500.jpg" name="middle" width="284" height="348"/>
<image id="21126501" url="http://dmir.ru/images/laskovyy-pokalechennyy-priyutskiy-pes-fedya-v-dar-21126501.jpg" name="default" width="554" height="680"/>
</images>
...其他3个带图片的标签,然后关闭标签<body>
大约有40个类似的XML元素,包括图像,文本标签和其余部分,我不想把它全部放在这里,因为它非常大。
我的观点是,我可以轻松地解析每个元素:
如果([elementName isEqualToString:@"text"])
,则将其保存到数组中,但是,有很多图像标记。当我可以轻松找到相应的文字或描述标签时,我找不到合适的图像,因为它们有很多。我想得到一个具有适当宽度/高度的图像(一个来自30),然后保存并进一步移动,但现在我做的最好的是有这样的未排序图像链接数组:
if([elementName isEqualToString:@"image"]){
self.imageString = [attributeDict objectForKey:@"url"];
if (self.imageString) {
// NSLog(@"%@", self.imageString);
}
[self.listOfImages addObject:self.imageString];
哦,我真的希望你和我在一起,现在你明白了我的意思和想做的事情。如何获得与正确密钥相对应的正确图像字符串(一个来自多个)(当我尝试使用密钥时,我发现解决方案不起作用,因为每个元素包含5个密钥,例如我想要单个元素与密钥“url”,其中还有关键的“prev”,并且只想要一个具有该参数的对象。)
任何帮助或建议将不胜感激。谢谢!
编辑:我试图比较这样的两个字符串,也许这有助于找出正确的字符串:
if ([elementName isEqualToString:@"images"]){
descriptionNew = [self.currentPosition objectForKey:@"description"];
}
if (descriptionOld == descriptionNew){
NSLog(@"equal");
} else {
newElement = YES;
NSLog(@"not equal");
}
然后BOOL newElement可用于从数组中删除最后一个对象..但我认为这种方法不是很好,解决方案应该更简单
答案 0 :(得分:1)
你说:
当我尝试使用键时,我发现该解决方案无法正常工作,因为每个元素包含5个键,例如我想要一个带有键“url”的单个元素,它还具有键“prev”,并且还只需要一个对象那个参数
你可以通过以下方式实现这一目标:
if ([elementName isEqualToString:@"image"])
{
NSString *name = attributDict[@"name"];
if ([name isEqualToString:@"prev"] && self.imageURLString == nil)
{
NSString *urlString = attributeDict[@"url"];
if (urlString)
{
self.imageURLString = urlString;
}
}
}
但是,在其他地方,你说:
当我可以轻松找到相应的文字或描述标签时,我找不到合适的图像,因为它们有很多。我想获得一个具有适当宽度/高度的图像(一个来自30),然后保存并进一步移动......
您必须描述要应用的规则以确定“正确的宽度/高度”。您可能只想让解析器保存image
整个attributeDict
中的每一个:
if ([elementName isEqualToString:@"image"])
{
[self.listOfImages addObject:attributeDict];
}
然后,当您完成所有images
的解析后,您可以遍历所有这些并确定哪个是“最佳”,并在需要时将其余部分删除。您也可以在解析时执行此操作(例如,保存“迄今为止最佳图像”的attributeDict
,并且每次解析新图像时,查看尺寸是否更好,如果是,请更换与当前的“最好的形象”)。
但是如果不知道你想要应用的确切规则,那就很难具体了。