首先就是先现在Google的第三方的开源包,地址自己Google就可以了。
把它加入到工程当中。然后GDataXMLNode.h中给我们提示到:
// libxml includes require that the target Header Search Paths contain
//
// /usr/include/libxml2
//
// and Other Linker Flags contain
//
// -lxml2
首先向Frameworks文件中添加libxml2.dylib这个库,而后再Croups & Files 侧边栏中双击我们的工程图标,找到 build 修改两个属性如下:
在Search Paths中 找到Header Search Paths 将其对应的值修改为:/usr/include/libxml2
在Linking中找到 Other Linker Flags 对应的值改为:-lxml2
OK准备工作完成,下面就可以写代码了
//获取数据的函数得到的是 NSData类型数据编码为GBK编码
NSURL *url = [[[NSURL alloc]initWithString:@"http://xxxxxxxxxxxxxx"]autorelease];
NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];
NSData *result = [NSURLConnection sendSynchronousRequest:theRequest returningResponse:&response error:&error];
//将GBK编码转化为 UTF8编码
NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(kCFStringEncodingGB_18030_2000);
NSString * myResponseStr = [[NSString alloc] initWithData:result encoding:enc];
// 截去 xml头字符串目的是防止在后面的解析过程种编码混乱
NSMutableString *mutableString = [[[NSMutableString alloc]initWithString:myResponseStr]autorelease];
[mutableString deleteCharactersInRange:NSMakeRange(0, strlen("<?xml version=\"1.0\" encoding=\"GBK\"?>"))];
NSString *realXML = [[[NSString alloc]initWithString:mutableString]autorelease];
如果你在后面解析出来的代码中发现中文字符是乱码,那么很有可能就犯了我所犯的错误。据我了解,NSString 类型的变量里面的字符全部都是UTF8编码,
我们在得到字符串的时候将其由GBK编码转化为了UTF8编码。如果我们仍然带着xml的头部字符的时候,在下面的工作中很有可能GDataXMLNode仍然按照
GBK编码格式进行的解析。所返回出来的东西也就成了乱码。这些是我个人的理解,不知到是否正确,但是删掉这个头部字符串之后就可以了,不然就是乱码
OK,下面是得到属性里的值。Google为我们做了很多的事情,不得不感慨GDataXMLNode给我们带来了如此多的便利
直接代码:
NSArray *getItems = [document nodesForXPath:@"//item" error:&error];
这里给出了一个老外写的代码:
/////////////////////// 截取属性应用举例
//NSInteger type=[[(GDataXMLNode *)[[urls objectAtIndex:i] attributeForName:@"type"] stringValue] intValue];
//NSInteger bit_stream=[[(GDataXMLNode *)[[urls objectAtIndex:i] attributeForName:@"bit_stream"] stringValue] intValue];
///////////////////////////////////////////
//// 调试信息 看是否获取属性成功 //////
//////////////////////////////////////////
NSLog(@"%@",[(GDataXMLNode *)[[getItems objectAtIndex:0]attributeForName:@"name"]stringValue] );
其他函数的具体用法看看头文件总的其他函数的说明就可以了。
还希望大家多多批评指正。
分享到:
相关推荐
1.将GDataXMLNode.h/m文件添加到工程中 2.向工程中增加“libxml2.dylib”库 3.在工程的“Build Settings”页中找到“Header Search Path”项,添加/usr/include/libxml2"到路径中
GDataXMLNode.h和GDataXMLNode.m分别是该类的头文件和实现文件,它们定义了类的接口和具体实现。 在iOS项目中集成GDataXML,通常需要将GDataXMLNode.h和GDataXMLNode.m文件添加到工程中,或者通过CocoaPods等依赖...
导航到子目录 Pod/Classes,然后选择 GDataXMLNode.h 和 GDataXMLNode.m。 当您将 GDataXMLNode.m 拖入您的项目时,您很可能会收到配置 Objective-C 桥接头的提示。 单击“是”将 Objective-C 桥接头添加到您的项目...
#import "GDataXMLNode.h" ``` 2. **加载XML数据**:获取XML文件的内容。这可以通过读取本地文件或者从网络请求XML数据来实现。例如,如果XML文件在本地,你可以这样读取: ```objc NSString *filePath = [...
首先,`GDataXMLNode.h`是这个库的核心头文件,它定义了`GDataXMLNode`类,这是解析XML文档的基础。`GDataXMLNode`类代表XML文档中的一个节点,它可以是元素、属性、文本、注释等。通过这个类,开发者可以访问和操作...
确保所有必要的头文件(如GDataXMLNode.h、GDataXMLDocument.h等)已包含在项目中,以便可以访问其API。 接下来,让我们了解GData如何解析XML。以下是一般步骤: 1. 创建XML文档对象:使用`GDataXMLDocument`类的...
使用XML解析,导入GDataXMLNode后,添加libxml2.dylib , 运行 ,出现libxml/tree.h not found错误
#import "GDataXMLNode.h" GDataXMLDocument *doc = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil]; GDataXMLElement *rootElement = [doc rootElement]; for (GDataXMLElement *child in ...
#import "GDataXMLNode.h" #import "GDataXMLDocument.h" ``` 接着,你需要创建一个`GDataXMLDocument`对象来加载XML数据。可以使用`initWithContentsOfURL:`或`initWithData:options:error:`方法来加载XML文件内容...
#import "GDataXMLNode.h" @interface RSSParser : NSObject - (NSArray *)parseRSSFeed:(NSString *)feedURL; @end ``` 在`RSSParser.m`文件中,我们实现`parseRSSFeed:`方法: ```objc #import "RSSParser.h...
#import "GDataXMLNode.h" #import "GDataXMLDocument.h" ``` 接着,我们可以创建一个GDataXMLDocument对象,从XML字符串或文件加载数据: ```objc NSString *xmlString = @"<root><element>Value</element></root...
#import "GDataXMLNode.h" #import "GDataXMLDocument.h" ``` 然后,加载XML数据,可以是从网络获取或本地文件读取: ```objc NSString *xmlString = @"<your-xml-string>"; NSData *data = [xmlString ...
#import "GDataXMLNode.h" #import "GDataXMLDocument.h" ``` 然后,可以使用以下代码从项目文件或沙盒路径加载XML: ```objc // 从项目文件读取 NSString *filePath = [[NSBundle mainBundle] pathForResource:@...
#import "GDataXMLNode.h" #import "GDataXMLDocument.h" ``` 然后创建一个遵循`GDataXMLParserDelegate`协议的对象,这个对象将接收并处理解析过程中的事件。例如: ```objc @interface XMLParser : NSObject @end...
在此目录中,找到GDataXMLNode.h和GDataXMLNode.m这两个文件,并将它们拖拽到Xcode项目中。将这两个文件添加到项目中后,确保选中项目,并在Xcode的目标设置中,将它们添加到编译文件列表中。完成这些步骤之后,...
a) 获取GDataXMLNode.h/m文件,并将它们添加到Xcode项目中。 b) 向项目中添加libxml2.tbd动态库引用。 c) 在项目的Build Settings中找到Header Search Paths项,并添加/usr/include/libxml2。 d) 将GDataXMLNode.h...
在实际项目中,根据需求,可能还需要对XML数据进行序列化和反序列化,或者结合其他库如GDataXMLNode来处理更复杂的XML操作。理解并熟练运用XML和相关工具,将极大地提升iOS应用的数据处理能力。
在处理复杂或特殊的XML文档时,可能需要考虑其他更强大的解析库,如NSXMLParser或第三方库如GDataXMLNode。 总之,XMLReader是iOS开发中一个实用的XML解析工具,它利用SAX解析方式有效地将XML数据转化为Objective-C...