我目前正在使用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 3
移到Item 1
所在的位置,我需要做些什么?它是否类似于将新元素插入数组的前面?
感谢您的帮助!
编辑:稍微更改了我的示例xml。我能以某种方式用新的<section>
取代整个insertChild:atIndex:
吗?
更新:
对于其他想要insertChild:atIndex:
等方法的人,请查看KissXML库。从GDataXML到KissXML的过渡非常简单,因为大多数方法名称都是相同的。 KissXML库基于Apple的XML类,它有一个{{1}}方法。
答案 0 :(得分:2)
您可以使用项目形成可变数组。稍微移动项目然后您可以将items数组保存为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。
您可以查看此source code以获得完整的实施。