Ios XML到NSD字典的NSArray
我有一个XML文件,大致如下:Ios XML到NSD字典的NSArray,ios,xml,nsarray,nsdictionary,Ios,Xml,Nsarray,Nsdictionary,我有一个XML文件,大致如下: <houses> <house> <title>123 Main St</title> <address>123 Main St, Georgetown Washingon D.C.</address> <photo>http://www.photo.com/images/1.jpg</photo> <photo>http://www.photo.com/i
<houses>
<house>
<title>123 Main St</title>
<address>123 Main St, Georgetown Washingon D.C.</address>
<photo>http://www.photo.com/images/1.jpg</photo>
<photo>http://www.photo.com/images/2.jpg</photo>
<photo>http://www.photo.com/images/3.jpg</photo>
<photo>http://www.photo.com/images/4.jpg</photo>
</house>
<house>
<title>1234 Main St</title>
<address>1234 Main St, Georgetown Washingon D.C.</address>
<photo>http://www.photo.com/images/1.jpg</photo>
<photo>http://www.photo.com/images/2.jpg</photo>
<photo>http://www.photo.com/images/3.jpg</photo>
<photo>http://www.photo.com/images/4.jpg</photo>
</house>
主街123号
但似乎无法让它发挥作用。如果任何人有任何想法如何做到这一点或更好的方式导入数据到我的应用程序和帮助将不胜感激 仅适用于MacOS:
以下是代码:
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"xml" ofType:@"xml"];
NSString *xml = [NSString stringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncoding error:nil];
NSXMLDocument *xmlDocument = [[[NSXMLDocument alloc] initWithXMLString:xml options:0 error:nil] autorelease];
NSMutableArray *array = [NSMutableArray array];
for (NSXMLElement *node in [xmlDocument.rootElement nodesForXPath:@"//house" error:nil])
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *photos = [NSMutableArray array];
for (NSXMLElement *subNode in node.children)
{
if ([subNode.name isEqualToString:@"photo"])
[photos addObject:subNode.stringValue];
else
[dict setObject:subNode.stringValue forKey:subNode.name];
}
[dict setObject:photos forKey:@"photos"];
[array addObject:dict];
}
NSLog(@"%@", array);
这里是输出:
(
{
address = "123 Main St, Georgetown Washingon D.C.";
photos = (
"http://www.photo.com/images/1.jpg",
"http://www.photo.com/images/2.jpg",
"http://www.photo.com/images/3.jpg",
"http://www.photo.com/images/4.jpg"
);
title = "123 Main St";
},
{
address = "1234 Main St, Georgetown Washingon D.C.";
photos = (
"http://www.photo.com/images/1.jpg",
"http://www.photo.com/images/2.jpg",
"http://www.photo.com/images/3.jpg",
"http://www.photo.com/images/4.jpg"
);
title = "1234 Main St";
}
}
仅适用于MacOS:
以下是代码:
NSString *xmlPath = [[NSBundle mainBundle] pathForResource:@"xml" ofType:@"xml"];
NSString *xml = [NSString stringWithContentsOfFile:xmlPath encoding:NSUTF8StringEncoding error:nil];
NSXMLDocument *xmlDocument = [[[NSXMLDocument alloc] initWithXMLString:xml options:0 error:nil] autorelease];
NSMutableArray *array = [NSMutableArray array];
for (NSXMLElement *node in [xmlDocument.rootElement nodesForXPath:@"//house" error:nil])
{
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
NSMutableArray *photos = [NSMutableArray array];
for (NSXMLElement *subNode in node.children)
{
if ([subNode.name isEqualToString:@"photo"])
[photos addObject:subNode.stringValue];
else
[dict setObject:subNode.stringValue forKey:subNode.name];
}
[dict setObject:photos forKey:@"photos"];
[array addObject:dict];
}
NSLog(@"%@", array);
这里是输出:
(
{
address = "123 Main St, Georgetown Washingon D.C.";
photos = (
"http://www.photo.com/images/1.jpg",
"http://www.photo.com/images/2.jpg",
"http://www.photo.com/images/3.jpg",
"http://www.photo.com/images/4.jpg"
);
title = "123 Main St";
},
{
address = "1234 Main St, Georgetown Washingon D.C.";
photos = (
"http://www.photo.com/images/1.jpg",
"http://www.photo.com/images/2.jpg",
"http://www.photo.com/images/3.jpg",
"http://www.photo.com/images/4.jpg"
);
title = "1234 Main St";
}
}
注意:NSXMLDocument在iOS中不可用。注意:NSXMLDocument在iOS中不可用。