惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

GbyAI
GbyAI
博客园_首页
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
阮一峰的网络日志
阮一峰的网络日志
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 司徒正美
V
V2EX
Cloudbric
Cloudbric
Hugging Face - Blog
Hugging Face - Blog
腾讯CDC
量子位
博客园 - 三生石上(FineUI控件)
博客园 - 叶小钗
K
Kaspersky official blog
博客园 - 【当耐特】
T
Tenable Blog
L
Lohrmann on Cybersecurity
The Cloudflare Blog
S
Schneier on Security
A
Arctic Wolf
Latest news
Latest news
C
Cyber Attacks, Cyber Crime and Cyber Security
罗磊的独立博客
T
The Exploit Database - CXSecurity.com
Cisco Talos Blog
Cisco Talos Blog
小众软件
小众软件
P
Privacy & Cybersecurity Law Blog
WordPress大学
WordPress大学
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
NISL@THU
NISL@THU
人人都是产品经理
人人都是产品经理
月光博客
月光博客
J
Java Code Geeks
V
Visual Studio Blog
S
Security Affairs
博客园 - Franky
T
Tailwind CSS Blog
Apple Machine Learning Research
Apple Machine Learning Research
H
Heimdal Security Blog
有赞技术团队
有赞技术团队
V2EX - 技术
V2EX - 技术
AWS News Blog
AWS News Blog
G
GRAHAM CLULEY
T
Troy Hunt's Blog
SecWiki News
SecWiki News
Spread Privacy
Spread Privacy
宝玉的分享
宝玉的分享
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园 - 聂微东

博客园 - Edison.Feng

[转]iPhone Mapkit 之在地图加入坐标点 使用MKAnnotation和MKAnnotationView [转]Android:使用URL和URLConnection(多线程下载) 【转】httpModules 与 httpHandlers 【转】挣脱浏览器的束缚(2) - 别让脚本引入坏了事 [转]asp.net中利用ashx实现图片防盗链 求任何一个正数的组合,组合的规则是这个数等于1或2的整数幂之和,请列出组合的情况。 C#利用反射获取对象属性的修改情况 C#利用反射获取对象属性值 Clone:Xml序列化反序列克隆对象 [转]Linux slab 分配器剖析 [转]Linux对I/O端口资源的管理 [转]linux内核分析-初始化分析 start_kernel paging_init [转]Linux TCP/IP 协议栈的关键数据结构Socket Buffer(sk_buff ) [转]Linux系统内核接收以太帧的处理程序 母牛生小牛(递归) MS SQL:Funcation拆分行 我使用WebService:Function.asmx的惊叹!!!
Objective-读Xml
Edison.Feng · 2011-04-11 · via 博客园 - Edison.Feng

有两种方式:

一:NSXMLParser

Utility.h:

#import <Foundation/Foundation.h>
@interface Utility : NSObject {

}

//获取文件在设备上的绝对路径

+ (NSString *) pathForResource:(NSString*)resourcepath;
@end

Utility.m :

 #import "Utility.h"

@implementation Utility

+ (NSString*) pathForResource:(NSString*)resourcepath
{
    NSBundle * mainBundle = [NSBundle mainBundle];
    NSMutableArray *directoryParts = [NSMutableArray arrayWithArray:[resourcepath componentsSeparatedByString:@"/"]];
    NSString       *filename       = [directoryParts lastObject];
    [directoryParts removeLastObject];
    
    NSString *directoryStr = @"Xml";
    NSString *path= [mainBundle pathForResource:filename
                                         ofType:@""
                                    inDirectory:directoryStr];
    
    return path;
}

@end

 - (void)viewDidLoad {

  NSURL *xmlUrl = [NSURL fileURLWithPath:[Utility pathForResource:@"SearchLog.xml"]];
     NSXMLParser *parser = [[NSXMLParser alloc] initWithContentsOfURL:xmlUrl];
        
     [parser setDelegate:self];
     [parser setShouldProcessNamespaces:NO];
     [parser setShouldReportNamespacePrefixes:NO];
     [parser setShouldResolveExternalEntities:NO];
    

 /*启动Xml解析,会触发

   parser:
        didStartElement:
        namespaceURI:
        qualifiedName:
        attributes:*/

  [parser parse];
    

  //刷新Table
    // [searchTableView reloadData];
        
     NSError *parseError = [parser parserError];
     if (parseError) {
            
     }
        
     [parser release];

 }

 
- (void)parser:(NSXMLParser *)parser
        didStartElement:(NSString *)elementName
        namespaceURI:(NSString *)namespaceURI
        qualifiedName:(NSString *)qName
        attributes:(NSDictionary *)attributeDict{
    
    if (qName) {
        elementName = qName;
    }
    
    if (xmlSearchParsedCounter >= 5) {
        [parser abortParsing];
    }
    
    if ([elementName isEqualToString:@"item"]) {
        xmlSearchParsedCounter++;
        NSString *value = [attributeDict valueForKey:@"value"];
        [self.searchList addObject:value];
    }
}

 二:libxml

参考:http://blog.prosight.me/index.php/2010/02/586

  1. 展开Targets
  2. 双击项目名
  3. 选择所有配置
  4. 搜索Header Search Path
  5. 加入一行并选中recursive选项: ${SDKROOT}/usr/include/libxml2
  6. 搜索Other Linker Flag
  7. 加入一行:-lxml2

Utility.h:

#import <Foundation/Foundation.h>
#import "TFHpple.h"

@interface Utility : NSObject {

}

+ (NSString *) pathForResource:(NSString*)resourcepath;
+ (NSMutableArray *)getXmlWithFileName:(NSString  *)fileName XPath: (NSString *)xpath;

@end

Utility.m:

 

#import "Utility.h"

@implementation Utility

+ (NSString*) pathForResource:(NSString*)resourcepath
{
    NSBundle * mainBundle = [NSBundle mainBundle];
    NSMutableArray *directoryParts = [NSMutableArray arrayWithArray:[resourcepath componentsSeparatedByString:@"/"]];
    NSString       *filename       = [directoryParts lastObject];
    [directoryParts removeLastObject];
    
    NSString *directoryStr = @"Xml";
    NSString *path= [mainBundle pathForResource:filename
                                         ofType:@""
                                    inDirectory:directoryStr];
    
    return path;
}

+ (NSMutableArray *)getXmlWithFileName:(NSString  *)fileName XPath: (NSString *)xpath{
    NSURL *xmlUrl = [NSURL fileURLWithPath:[Utility pathForResource:fileName]];
    
    NSData *data = [[NSData alloc] initWithContentsOfURL:xmlUrl];
    
    TFHpple *xpathParser = [[TFHpple alloc] initWithXMLData:data];        
    NSArray *elements  = [xpathParser search:xpath];
    NSMutableArray *array = [[NSMutableArray alloc] init];
    for(TFHppleElement *element in elements) {
        [array addObject:[element content]];
    }
    
    [xpathParser release];
    [data release];
    
    return array;
}

@end

 调用例子:

 searchList = [Utility getXmlWithFileName:@"SearchLog.xml" XPath:@"//SearchLog/Item/text()"];