1

我目前正在使用 Google 的 GDataXML 库在我的 iOS 应用程序中操作 XML。xml 用于填充表格视图,所以我想支持的一件事(但目前不支持)是能够使用tableView:moveRowAtIndexPath:toIndexPath:.

有没有办法使用 GDataXML 轻松做到这一点?

例如,假设这是我的 xml 的样子:

<root>
    <section>    
        <item>
              <name>Item 1</name>
              <description>The first item</description>
        </item>
        <item>
              <name>Item 2</name>
              <description>The second item</description>
        </item>
        <item>
              <name>Item 3</name>
              <description>The third item</description>
        </item>
    </section>
</root>

我需要做什么才能移到Item 3where Item 1is 以上?是否类似于在数组前面插入一个新元素?

谢谢您的帮助!

编辑:稍微更改了我的示例 xml。我可以<section>以某种方式将整个替换为新的吗?

更新:

对于其他想要类似 方法的人insertChild:atIndex:,请查看KissXML库。从 GDataXML 到 KissXML 的转换非常容易,因为大多数方法名称都是相同的。KissXML 库建立在 Apple 的 XML 类之上,并且它有一个insertChild:atIndex:方法。

4

1 回答 1

2

您可以使用这些项目形成一个可变数组。稍微移动一下项目,然后您可以将项目数组另存为 xml。

你可以这样写xml。我创建了一个带有键名和描述的字典数组

GDataXMLElement *rootElement = [GDataXMLNode elementWithName:@"root"];
GDataXMLElement *sectionElement = [GDataXMLNode elementWithName:@"section"];

for (NSDictionary *dict in self.items) {

    GDataXMLElement *itemElement = [GDataXMLElement elementWithName:@"item"];

    GDataXMLElement *nameElement = [GDataXMLNode elementWithName:@"name" stringValue:dict[@"name"]];
    GDataXMLElement *descElement = [GDataXMLNode elementWithName:@"description" stringValue:dict[@"description"]];

    [itemElement addChild:nameElement];
    [itemElement addChild:descElement];

    [sectionElement addChild:itemElement];

}

[rootElement addChild:sectionElement];



GDataXMLDocument *document = [[GDataXMLDocument alloc]
                              initWithRootElement:rootElement];

NSData *xmlData = document.XMLData;

现在这个 xmlData 可以写入 fileLocation。

您可以查看此源代码以获取完整的实现。

于 2013-05-31T18:38:14.593 回答