1

この xml ドキュメントを cocoa と Objective C で解析する方法を見つけようとして、数日間壁に頭をぶつけてきました。それを 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("Size") は値 4 の文字列を返します。

どんな助けでも大歓迎です。

4

1 に答える 1

0

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"];
   }
}
于 2012-08-05T20:48:01.690 に答える