使用GDataXML生成、修改XML文档-陈棚

使用GDXML生成XML文档的步骤如下。

 1、调用GDataXMLNode的elementWithName:方法创建GDataXMLElement对象,对象作为XML文档的根元素。

 2、调用GDataXMLNode的elementWithName:方法不断创建GDataXMLElement对象(XML元素),并利用元素之间的父子关系组织这些XML元素。

 3、调用GDataXMLDocument的initWithRootElement:方法根据指定根元素来生成GDataXMLDocument对象---它代表了XML文档在内存中的形式。

 4、调用GDataXMLDocument对象的XMLData的方法获取XML文档对应的NSFata对象,调用NSData的输出方法将XML文档输出到制定文件或其他储存介质。

使用GDataXML修改XML文档的步骤如下。

 1、使用GDataXMLDocument的方法根据制定XML文档或者XML字符串来生成GDataXMLDocument对象---它代表了XML文档在内存中的形式。

 2、获取GDataXMLDocument对象的根元素,然后利用元素之间的父子关系添加资源上,删除子元素或者修改元素内容。

 3、调用GDataXMLDocument对象的XMLData的方法获取XML文档对应的NSData对象,调用NSData的输出方法将XML文档输出到指定文件或其他储存介质。

下面示例示范了如何使用XML文档保存用户添加的数据。

#import "ViewController.h"
#import "GDataXMLNode.h"

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UITextField *idField;
@property (weak, nonatomic) IBOutlet UITextField *nameField;
@property (weak, nonatomic) IBOutlet UITextField *authorField;
@property (weak, nonatomic) IBOutlet UITextField *remarkField;

@end

@implementation ViewController
- (IBAction)finishEdit:(id)sender {
    [sender resignFirstResponder];
}

- (void)viewDidLoad {
    [super viewDidLoad];
   self.xmlPath = [NSHomeDirectory() stringByAppendingPathComponent:@"/books.xml"];
}
- (IBAction)add:(id)sender {
    //获取应用界面上4个文本框内的值
    NSString* bookId = self.idField.text;
    NSString* bookName = self.nameField.text;
    NSString* author = self.authorField.text;
    NSString* remark = self.remarkField.text;
    if (bookId.length > 0 && bookName.length > 0 && author.length > 0 && remark.length > 0) {
        //使用NSFileHandle对象根据文件路劲获取到文件
        NSFileHandle* file = [NSFileHandle fileHandleForReadingAtPath:self.xmlPath];
        //获取文件内容返回NSData对象
        NSData* data = [file readabilityHandler];
        //定义变量保存将要处理的XML文档对象
        GDataXMLDocument* doc;
        //定义变量保存XML文档的根元素
        GDataXMLElement* rootEle;
        //如果data存在,则表明改XML文档已经存在
        if (data) {
            //根据NSData对象初始化GDataXMLDocument对象
            doc = [[GDataXMLDocument alloc]initWithData:data options:0 error:nil];

            //获取XML文档的根元素
            rootEle = doc.rootElement;
        }
        //如果XML文档还不存在,则需要新建XML文档
        else
        {
            //创建<books../>元素
            rootEle = [GDataXMLNode elementWithName:@"books"];

        }
        //创建<book.../>元素
        GDataXMLElement* bookEle = [GDataXMLNode elementWithName:@"book"];
        //创建id属性,属性值为bookid
        GDataXMLNode* attr = [GDataXMLNode attributeWithName:@"id" stringValue:bookId];
        //为<book.../>元素添加id属性
        [bookEle addAttribute:attr];
        //依次创建<title.../>,<author.../>,<remark.../>3个元素
        GDataXMLElement* titleEle = [GDataXMLNode elementWithName:@"title" stringValue:bookName];
        GDataXMLElement* authorEle = [GDataXMLNode elementWithName:@"author" stringValue:author];
        GDataXMLElement* remarkEle = [GDataXMLNode elementWithName:@"remark" stringValue:remark];
        //将<title.../>,<author.../>,<remark.../>3个元素添加到bookEle元素中
        [bookEle addChild:titleEle];
        [bookEle addChild:authorEle];
        [bookEle addChild:remarkEle];
        //将<book.../>元素添加为XML文档根元素的子元素
        [rootEle addChild:bookEle];
        //如果data不存在,即XML文档还不存在,则表明需要重新生成GDataXMLDocument对象
        if(!data)
        {
            //以指定的跟元素创建GDataXMLDocument对象
            doc = [[GDataXMLDocument alloc]initWithRootElement:rootEle];
        }
        //将GDataXMLDocument转换为NSfata后输出到指定文件中
        [doc.XMLData writeToFile:self.xmlPath atomically:YES];
        self.idField.text = nil;
        self.nameField.text = nil;
        self.authorField.text = nil;
        self.remarkField.text = nil;
        //创建并显示提示框
       [[[UIAlertView alloc]initWithTitle:@"提示" message:@"添加成功" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil] show];
    }else
    {
        //创建并显示提示框
        [[[UIAlertView alloc]initWithTitle:@"提示" message:@"您必须为所有信息都输入有效的值" delegate:self cancelButtonTitle:@"确定" otherButtonTitles: nil] show];

    }
}

时间: 2024-08-28 23:30:50

使用GDataXML生成、修改XML文档-陈棚的相关文章

dom4j 解析 XML文档截录

dom4j 是一种解析 XML 文档的开放源代码 XML 框架.本文介绍如何使用包含在 dom4j 中的解析器创建并修改 XML 文档. dom4j API 包含一个解析 XML 文档的工具.本文中将使用这个解析器创建一个示例 XML 文档.清单 1 显示了这个示例 XML 文档,catalog.xml. 清单 1. 示例 XML 文档(catalog.xml) <?xml version="1.0" encoding="UTF-8"?> <cat

写出内容到xml文档

package gz.itcast.a_dom4j_write; import java.io.File; import java.io.FileOutputStream; import org.dom4j.Document; import org.dom4j.io.SAXReader; import org.dom4j.io.XMLWriter; /** * 第一个写出内容到xml文档 * @author APPle * */ public class Demo1 { public stati

C# XML 文档注释文件格式

在编写 C# 代码时,只要在注释按照格式加入 XML 文档注释,例如: /// <summary> /// 这里是类的注释. /// </summary> public class MyClass { } 就可以通过设置项目的"属性->生成->输出->XML 文档文件",来为当前项目生成包含所有文档注释的 XML 文件.一般可用于 Visual Studio 的智能提示,或者利用 Sandcastle 等工具生成文档. 下面,我会介绍生成的 X

文档对象模型操作xml文档

简介 :文档对象模型(DOM)是一种用于处理xml文档的API函数集. 2.1文档对象模型概述 按照W3C的定义,DOM是“一种允许程序或脚本动态地访问更新文档内容,结构和样式的.独立于平台和语言的规范化接口.DOM是表示文档(比如HTML和XML)和访问.操作构成文档的各种元素的应用程序接口,它以树状结构表示HTML和XML文档,定义了遍历这个树和检查.修改树的节点的方法和属性. DOM的核心API还允许你创建和填充文件.加载文档并保存. 2.2DOM实现 微软的net框架在Systemx.x

.NET(C#)使用Serialize、Deserialize序列和反序列化XML文档

本文给大家分享一下C#操作(读取.写入)XML文档的实用方法,即用.NET本身提供的Deserialize和Serialize进行反序列化和序列化XML文档.这种方法主要是对比较规范的XML文档进行操作,因为它(XML文档)和类对象是严格对应的,否则在反序列或序列化的时候会出现错误.其他的不用多说,直接看示例代码吧: using System; using System.Collections.Generic; using System.IO; using System.Linq; using

C# 创建XML文档

有些时候我们需要生成一个xml文档作为数据交换的容器.当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱.这时候就需要C#给我们提供现成的类库,以供我们自由的创建xml文档. 比如我们要创建如下的xml文档 <?xml version="1.0" encoding="UTF-8"?> <ns0:Z_AVS_UPLOAD_WEIGHT_Request xmlns:ns0=&q

C#操作xml文档增删改查(Linq to XML)

1.创建xml 1 public static void CreateXmlDoc() 2 { 3 XElement myDoc = 4 new XElement("Customers", 5 new XElement("Customer", new XAttribute("ID", "1"), 6 new XElement("Usename", "Rock Zed"), 7 new X

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例)

四种生成和解析XML文档的方法详解(介绍+优缺点比较+示例) 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM.SAX.JDOM和DOM4J 下面首先给出这四种方法的jar包下载地址 DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里 SAX:http://sourceforge.net/projects/sax/ JDOM:http://jdom.org/downloads/index.html DOM4J:http://sourceforge.

生成XML文档

JAVA操作XML文档主要有四种方式,分别是DOM.SAX.JDOM和DOM4J,DOM和SAX是官方提供的,而JDOM和DOM4J则是引用第三方库的,其中用的最多的是DOM4J方式.运行效率和内存使用方面最优的是SAX,但是由于SAX是基于事件的方式,所以SAX无法在编写XML的过程中对已编写内容进行修改,但对于不用进行频繁修改的需求,还是应该选择使用SAX. 现在来生成这样的一份XML文档,文档内容如下: <?xml version="1.0" encoding="