我目前正在使用谷歌的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:这样的方法,请查看KissXML库。从GDataXML到KissXML的转换非常容易,因为大多数方法名都是相同的。XML库是在苹果的KissXML类的基础上构建的,它有一个insertChild:atIndex:方法。
发布于 2013-06-01 02:38:15
您可以使用这些项形成一个可变数组。稍微移动一下条目,然后就可以将条目数组保存为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以获得完整的实现。
https://stackoverflow.com/questions/16862279
复制相似问题