我正在尝试为学校项目解析此XML文件:http://ax.itunes.apple.com/WebObjects/MZStoreServices.woa/ws/RSS/topsongs/limit=10/genre=20/xml。
我的问题是我正在尝试获取此处的相册名称:<im:collection><im:name>
。但是有两个名为<im:name>
的元素。第一个位于<entry>
,第二个位于<im:collection>
。
如何从第二个<im:name>
获取信息?
答案 0 :(得分:4)
您将使用XML一直遇到问题,因为标签可能会在多个父级中多次出现。我跟踪这个的方法是跟踪父标记。因此,在子类NSXMLParser
中,我维护了两个属性:
NSString *currentTag;
NSString *parentTag;
在parser:didStartElement:namespaceURI:qualifiedName:attributes:
我填充它们:
parentTag = currentTag;
currentTag = elementName;
在parser:foundCharacters:
中,我根据我目前所处的父标记填充我的数据模型...
if ([currentTag isEqualToString:@"im:name"]) {
if ([parentTag isEqualToString:@"entry"]) {
// do something
} else if ([parentTag isEqualToString:@"im:collection"]) {
// do something else
}
}
加盐调味。
答案 1 :(得分:0)
在任何使用pull解析器(处理标记事件而不是浏览DOM)的XML解析中,如果需要特定于a的元素,则必须在某处设置某种变量来跟踪文档中的位置。与其他子树中的元素同名的XML子树。
在您的情况下,因为您知道您希望在集合下使用名称,您还需要查找集合标记并跟踪您何时输入并离开它 - 所以当您到达名称标记时,您只需处理它你也在内部收藏。