【问题标题】:Move XML element to different position with GDataXML使用 GDataXML 将 XML 元素移动到不同的位置
【发布时间】:2013-05-27 13:40:31
【问题描述】:

我目前正在使用 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。我可以以某种方式将整个&lt;section&gt; 替换为新的吗?

更新:

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

【问题讨论】:

    标签: ios objective-c xml gdata gdataxml


    【解决方案1】:

    您可以用这些项目组成一个可变数组。稍微移动一下项目,然后您可以将项目数组另存为 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 以获得完整的实施。

    【讨论】:

    • 非常深入的回答!所以基本上,要移动元素,你必须重新创建 xml 文档?
    • @EricAmorde 我相信这是处理重新排序的方法:)
    • 对,对不起,我想我只是想知道该功能是否是内置的,比如方法 insertNodeAtIndex: 或其他东西。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 1970-01-01
    • 2020-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多