使用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]; }
}
使用GDataXML生成、修改XML文档-陈棚的更多相关文章
- Dom4j修改xml文档引入
前面介绍了如何解析xnl文档的内容,这里对修改xml展开讨论. 一.首先看一下,写出内容到xml文档的主要代码: XMLWriter writer = new XMLWriter(OutputStre ...
- Dom4j修改xml文档
1. 写出内容到xml文档 XMLWriter writer = new XMLWriter(OutputStream, OutputForamt) wirter.write(Document); 2 ...
- c# 创建,加载,修改XML文档
using System.Xml.Linq; static void Main(string[] args) { XDocument xDocument = new XDocument(new XEl ...
- python 修改xml文档 ing
原xml文件 <?xml version="1.0" encoding="utf-8"?> <catalog> <maxid> ...
- Java DOM解析器 - 修改XML文档
这是我们需要修改的输入XML文件: 1 2 3 4 5 6 7 8 9 10 11 12 <?xml version="1.0" encoding="UTF-8&q ...
- 解析txt文本,dom4j工具输出为xml文档
有如下一个ttl.txt文本文档,每一行用空格隔开的三段分别代表主谓宾, 要将它们输出为xml格式文档 工具:dom4j,jar包导入MyEclipse的Java Project工程 代码如下: pa ...
- C# XML 文档注释文件格式
在编写 C# 代码时,只要在注释按照格式加入 XML 文档注释,例如: /// <summary> /// 这里是类的注释. /// </summary> public cla ...
- C# 创建XML文档
有些时候我们需要生成一个xml文档作为数据交换的容器.当然我们用拼接字符串的方法来进行构建xml,但是这种方法虽然简单有效,但是如果xml文档结构过于复杂,拼接字符串会让人眼花缭乱.这时候就需要C#给 ...
- 在Sql Server 2005中将主子表关系的XML文档转换成主子表“Join”形式的表
本文转载:http://www.cnblogs.com/Ricky81317/archive/2010/01/06/1640434.html 最近这段时间在Sql Server 2005下做了很多根据 ...
随机推荐
- 最简短的 AC 自动机!
写在前面 仍然是写给自己的,看不懂别怪我. 最简短的 AC 自动机! AC 自动机用于多模匹配. 模式串被插入一个添加了一些转移边的 Trie 中.在匹配的时候,若失配,则使下一个字符跳到该节点的 f ...
- 一键抠除路人甲,昇腾CANN带你识破神秘的“AI消除术”
摘要:都说人工智能改变了生活,你感觉到了么?AI的魔力就在你抠去路人甲的一瞬间来到了你身边.今天就跟大家聊聊--神秘的"AI消除术". 引语 旅途归来,重温美好却被秀丽河山前的路人 ...
- Python+flask+flask-apscheduer实现定时下发任务
Python+flask+flask-apscheduer实现定时下发任务 背景: 使用python+flask+mamaca实现的自动化用例管理平台,可以下发任务到具体的节点,进行执行测试用例,没有 ...
- 初识python: 集合
集合是一个无序的,不重复的数据组合.主要作用如下:1.去重,把一个列表变成集合,会自动去重:2.关系测试,测试两组数据之前的交集.差集.并集等关系 #!/user/bin env python # a ...
- 【PowerShell】ASCII与Char之间的转换
1 [char[]][int[]]$char=65..90 2 $char -join ',' 3 [int[]][char[]]$ascii=$char 4 $ascii -join ',' A,B ...
- vue3.0+vue-cli3.0项目搭建
因为需要兼容其他vue2.0的项目,所以先卸载vue-cli,再全局安装桥接工具 卸载vue-cli2.0 npm uninstall vue-cli -g 安装vue-cli3.0 npm inst ...
- KMP算法解题模板(更新)
/* kmp算法的主要作用在于对next数组的运用,所以这里只给出next数组的模板 性质1:对于每一个长度len的子串,该子串的最小循环节为len-next[len] 性质2:kmp的next不断向 ...
- JAVA并发-AQS知识笔记
概述 AQS是AbstractQueuedSynchronizer的缩写,翻译成中文就是抽象队列同步器,AbstractQueuedSynchronizer这个类也是在java.util.concur ...
- Express框架的简单使用
Express框架的简单使用 这个框架是基于Node.js的框架平台 需要先安装node.js 安装完node.js后使用指令操作 npm init --yes 初始化 npm i express 安 ...
- 记一次org.springframework.transaction.UnexpectedRollbackException: Transaction rolled back because it has been marked as rollback-only异常
@Transactional(rollbackFor = Exception.class) @Overridepublic DubboResult<Boolean> productAddO ...