Objective c 从NSXMLDocument节点获取属性信息

Objective c 从NSXMLDocument节点获取属性信息,objective-c,xml-parsing,nsxmlparser,nsxml,nsxmldocument,Objective C,Xml Parsing,Nsxmlparser,Nsxml,Nsxmldocument,几天来,我一直在苦苦思索如何用cocoa和objective C解析这个xml文档。我已经将它加载到NSXMLDocument中,并且能够获得节点 <MediaContainer noHistory="0" replaceParent="0" size="4" identifier="com.plexapp.system"> <Directory key="aHR0cDovLzE5Mi4xNjguMS45OTozMjQwMC9saWJyYXJ5L3NlY3Rpb25zLzI_"

几天来,我一直在苦苦思索如何用cocoa和objective C解析这个xml文档。我已经将它加载到NSXMLDocument中,并且能够获得节点

<MediaContainer noHistory="0" replaceParent="0" size="4" identifier="com.plexapp.system">
<Directory key="aHR0cDovLzE5Mi4xNjguMS45OTozMjQwMC9saWJyYXJ5L3NlY3Rpb25zLzI_" art="2/art?updatedAt=1344035442" unique="1" name="3D Movies" title="3D Movies" type="movie" serverVersion="0.9.6.7.204-266f05d" host="192.168.1.99" serverName="Eddard" path="/library/sections/2" machineIdentifier="2dddaaedb46a722cf74695c19a7d3947bbeebfd2" local="1" port="32400"/>
<Directory key="aHR0cDovLzE5Mi4xNjguMS45OTozMjQwMC9saWJyYXJ5L3NlY3Rpb25zLzE_" art="1/art?updatedAt=1344035443" unique="1" name="Movies" title="Movies" type="movie" serverVersion="0.9.6.7.204-266f05d" host="192.168.1.99" serverName="Eddard" path="/library/sections/1" machineIdentifier="2dddaaedb46a722cf74695c19a7d3947bbeebfd2" local="1" port="32400"/>
<Directory key="aHR0cDovLzE5Mi4xNjguMS45OTozMjQwMC9saWJyYXJ5L3NlY3Rpb25zLzQ_" art="4/art?updatedAt=1344035444" unique="1" name="Super Audio CDs" title="Super Audio CDs" type="movie" serverVersion="0.9.6.7.204-266f05d" host="192.168.1.99" serverName="Eddard" path="/library/sections/4" machineIdentifier="2dddaaedb46a722cf74695c19a7d3947bbeebfd2" local="1" port="32400"/>
<Directory key="aHR0cDovLzE5Mi4xNjguMS45OTozMjQwMC9saWJyYXJ5L3NlY3Rpb25zLzM_" art="3/art?updatedAt=1344037454" unique="1" name="TV Shows" title="TV Shows" type="show" serverVersion="0.9.6.7.204-266f05d" host="192.168.1.99" serverName="Eddard" path="/library/sections/3" machineIdentifier="2dddaaedb46a722cf74695c19a7d3947bbeebfd2" local="1" port="32400"/>
</MediaContainer>

使XML文档变得棘手的是,每个节点都有几个属性。因此,当我转到[node XMLString]时,我得到了仍然没有意义的完整字符串。它们是从节点中提取单个属性的一种方法,例如类似于名为getAttribute(String)的java XML方法,它允许我为String参数输入属性名称并返回绑定到它的值,例如getAttribute(“Size”)将返回值为4的字符串


非常感谢您的帮助。

如果您使用的是NSXMLParser,则可以使用以下NSXMLParserDelegate方法获取XML元素的属性:

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict {
   if ([elementName isEqualToString:@"MediaContainer"]) {
      NSString *size = [attributeDict objectForKey:@"size"];
   }
}

这是可行的,但现在我遇到了一个新问题,我希望你能帮我解决。我有一个类似这样的If语句,If([elementName isEqualToString:@“Directory”]){NSString*size=[attributeDict objectForKey:@“path”];NSLog(@“I Ran:%@”,size);}size打印为空,但是这个If语句If([elementName isEqualToString:@“Directory”]){NSString*size=[attributeDict objectForKey:@“title”];NSLog(@“I run:%@”,size);}工作正常,打印出正确的信息,我不明白为什么会这样。实际上刚刚解决了这个问题,结果发现我使用了错误的URL。谢谢你的帮助