【问题标题】:XML parsing - grouping attributes into nsdictionary with KissXML and XPathXML 解析 - 使用 KissXML 和 XPath 将属性分组到 nsdictionary
【发布时间】:2012-12-25 03:23:08
【问题描述】:

我尝试的目标是解析这个 xml 文档 https://api.eveonline.com/eve/SkillTree.xml.aspx 并最终将其放入核心数据中。

但我遇到问题的 sn-p 是

<rowset name="requiredSkills" key="typeID" columns="typeID,skillLevel">
          <row typeID="13279" skillLevel="3" />
          <row typeID="3402" skillLevel="4" />
        </rowset>

我遇到的问题是试图弄清楚如何将 typeID 和 SkillLevel 保存在一起以保存在 nsdictionary 中。

所以目标是将每个&lt;row typeID="13279" skillLevel="3" /&gt; 放入自己的对象中。

我使用的主要代码是

-(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 也只是全部转储到一个数组中。我只是迷失了如何让元素行更好地分开。

谢谢。

【问题讨论】:

    标签: objective-c cocoa core-data xpath kissxml


    【解决方案1】:

    如果你使用 NSXMLParser,那会容易得多。在每个行标签的开头,您将创建一个新对象来表示它。此时您还将获得所有属性的字典,因此您可以使用它设置新行对象实例的属性。

    【讨论】:

    • 这就是我的想法,我只是用错误的工具敲打这个,谢谢
    猜你喜欢
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    • 2023-03-21
    • 2013-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多