使用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-11-01 11:50:01