我尝试的目标是解析这个 xml 文档https://api.eveonline.com/eve/SkillTree.xml.aspx并最终将其放入核心数据中。
但我遇到问题的片段是
<rowset name="requiredSkills" key="typeID" columns="typeID,skillLevel">
<row typeID="13279" skillLevel="3" />
<row typeID="3402" skillLevel="4" />
</rowset>
我遇到的问题是试图弄清楚如何将 typeID 和 SkillLevel 保持在一起以保存在 nsdictionary 中。
所以我们的目标是将每个都<row typeID="13279" skillLevel="3" />
放入自己的对象中。
我使用的主要代码是
-(void)parseXMLFromBundle
{
NSError *error;
NSString *path = [[NSBundle mainBundle] pathForResource:@"SkillTree" ofType:@"xml"];
DDXMLDocument *xmlDoc = [[DDXMLDocument alloc] initWithData:[NSData dataWithContentsOfFile:path] options:0 error:&error];
//main array with everything
NSArray *xmlItems = [xmlDoc nodesForXPath:@"//result" error:&error];
//go through it to extract each thing
for (DDXMLElement *itemElement in xmlItems)
{
self.typeArray = [itemElement nodesForXPath:@"//@typeName" error:&error];
self.requiredIDArray = [itemElement nodesForXPath:@"//row[@typeID]/@typeID" error:&error];
DLog(@"required SkillID: %@",self.requiredIDArray);
}
typeName 工作正常,我想要的每个对象只有 1 个名称,但它可以有多个 typeID,所以我试图将这些值分组到 1 个对象中,以便最终将其全部导入核心数据。我知道 typeID 也只是被全部转储到一个数组中。我只是迷失了如何让元素行更好地分隔东西。
谢谢。