xml读写--谁知道这几个方法怎么用都需要什么框架(请留言)

2024-06-06 14:32

本文主要是介绍xml读写--谁知道这几个方法怎么用都需要什么框架(请留言),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

创建XML文件

  1. //创建XML文件  
  2. - (NSXMLDocument *)createXMLDocument:(NSString *)rootName{  
  3.     NSLog(@"%@ with rootName %@", NSStringFromSelector(_cmd), rootName);  
  4.     NSXMLElement *root = (NSXMLElement *)[NSXMLNode elementWithName:rootName];  
  5.     [root addAttribute:[NSXMLNode attributeWithName:@"version" stringValue:@"1.0"]];  
  6.     NSXMLDocument *xmlDoc = [[NSXMLDocument alloc] initWithRootElement:root];  
  7.     [xmlDoc setVersion:@"1.0"];  
  8.     [xmlDoc setCharacterEncoding:@"UTF-8"];  
  9.     [xmlDoc setRootElement:root];  
  10.       
  11.     return [xmlDoc autorelease];  
  12. }  

2. 装载XML文件


  1. - (NSXMLDocument *)loadXMLDocument:(NSString *)xmlFilePath{  
  2.     assert(xmlFilePath);  
  3.     NSXMLDocument *xmlDoc = nil;  
  4.     NSError *error = nil;  
  5.     @try {  
  6.         NSURL *fileURL = [NSURL fileURLWithPath:xmlFilePath];  
  7.         if (fileURL == nil) {  
  8.             return nil;  
  9.         }  
  10.         xmlDoc = [[NSXMLDocument alloc] initWithContentsOfURL:fileURL options:NSXMLDocumentTidyXML error:&error];  
  11.     }  
  12.     @catch (NSException * e) {  
  13.           
  14.     }  
  15.     @finally {  
  16.         return [xmlDoc autorelease];  
  17.     }  
  18. }  

3. 保存XML文件


  1. - (BOOL) saveXMLFile:(NSString *)destPath :(NSXMLDocument *)xmlDoucment{  
  2.     if (xmlDoucment == nil) {  
  3.         return NO;  
  4.     }  
  5.       
  6.     if ( ! [[NSFileManager defaultManager] fileExistsAtPath:destPath]) {  
  7.         if ( ! [[NSFileManager defaultManager] createFileAtPath:destPath contents:nil attributes:nil]){  
  8.             return NO;  
  9.         }  
  10.     }  
  11.   
  12.     NSData *xmlData = [xmlDoucment XMLDataWithOptions:NSXMLNodePrettyPrint];   
  13.     if (![xmlData writeToFile:destPath atomically:YES]) {  
  14.         NSLog(@"Could not write document out...");  
  15.         return NO;  
  16.     }  
  17.       
  18.     return YES;  
  19. }  

4. 生成CData节点


  1. - (NSXMLNode *)generateCDataNode:(NSString *)value {  
  2. <span style="white-space:pre">  </span>NSXMLNode *cdataNode = [[NSXMLNode alloc] initWithKind:NSXMLTextKind options:NSXMLNodeIsCDATA];  
  3. <span style="white-space:pre">  </span>[cdataNode setStringValue:value];  
  4. <span style="white-space:pre">  </span>  
  5. <span style="white-space:pre">  </span>return [cdataNode autorelease];  
  6. }  

可以像下面这样使用:

  1. NSXMLElement *urlNode = [NSXMLElement elementWithName:@"Setting"];  
  2.     NSXMLNode *cdataNode = [self generateCDataNode:dmgFileName];  
  3.     [urlNode addAttribute:[NSXMLNode attributeWithName:@"name" stringValue:name]];  
  4.     [urlNode addAttribute:[NSXMLNode attributeWithName:@"type" stringValue:type]];  
  5.     [urlNode addChild:cdataNode];  

生成的Xml节点如下:

 


  1. <Setting name="OutputFileName" type="string"><![CDATA[mac-data-recovery_full737.dmg]]></Setting> 

这篇关于xml读写--谁知道这几个方法怎么用都需要什么框架(请留言)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1036371

相关文章

PHP轻松处理千万行数据的方法详解

《PHP轻松处理千万行数据的方法详解》说到处理大数据集,PHP通常不是第一个想到的语言,但如果你曾经需要处理数百万行数据而不让服务器崩溃或内存耗尽,你就会知道PHP用对了工具有多强大,下面小编就... 目录问题的本质php 中的数据流处理:为什么必不可少生成器:内存高效的迭代方式流量控制:避免系统过载一次性

python获取指定名字的程序的文件路径的两种方法

《python获取指定名字的程序的文件路径的两种方法》本文主要介绍了python获取指定名字的程序的文件路径的两种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要... 最近在做项目,需要用到给定一个程序名字就可以自动获取到这个程序在Windows系统下的绝对路径,以下

JavaScript中的高级调试方法全攻略指南

《JavaScript中的高级调试方法全攻略指南》什么是高级JavaScript调试技巧,它比console.log有何优势,如何使用断点调试定位问题,通过本文,我们将深入解答这些问题,带您从理论到实... 目录观点与案例结合观点1观点2观点3观点4观点5高级调试技巧详解实战案例断点调试:定位变量错误性能分

Python中 try / except / else / finally 异常处理方法详解

《Python中try/except/else/finally异常处理方法详解》:本文主要介绍Python中try/except/else/finally异常处理方法的相关资料,涵... 目录1. 基本结构2. 各部分的作用tryexceptelsefinally3. 执行流程总结4. 常见用法(1)多个e

ShardingProxy读写分离之原理、配置与实践过程

《ShardingProxy读写分离之原理、配置与实践过程》ShardingProxy是ApacheShardingSphere的数据库中间件,通过三层架构实现读写分离,解决高并发场景下数据库性能瓶... 目录一、ShardingProxy技术定位与读写分离核心价值1.1 技术定位1.2 读写分离核心价值二

JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法

《JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法》:本文主要介绍JavaScript中比较两个数组是否有相同元素(交集)的三种常用方法,每种方法结合实例代码给大家介绍的非常... 目录引言:为什么"相等"判断如此重要?方法1:使用some()+includes()(适合小数组)方法2

GSON框架下将百度天气JSON数据转JavaBean

《GSON框架下将百度天气JSON数据转JavaBean》这篇文章主要为大家详细介绍了如何在GSON框架下实现将百度天气JSON数据转JavaBean,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言一、百度天气jsON1、请求参数2、返回参数3、属性映射二、GSON属性映射实战1、类对象映

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消