利用GDataXML进行XML文件解析
来源:互联网 发布:java ee创建web项目 编辑:程序博客网 时间:2024/05/29 20:03
GDataXML
来看GDataXML,它是一种DOM方式的解析类库。DOM实现的原理是把整个xml文档一次性读出,放在一个树型结构里。在需要的时候,查找特定节点,然后对节点进行读或写。
在使用之前呢,我们还是先从网上下载GDataXML包,里面两个文件GDataXMLNode.h和GDataXMLNode.m导入到项目中来,编译,发现报错了,这是因为GDataXML是依赖libmxl2的,我们要去项目的Target中做一些设置。
- 找到项目的Tarfet,进入Build Phases里面的Link Binary With Libraries,点击“加号”,搜索libxml,把出现的包添加进去,这里最新版的XCode7和iOS9中,是libxml.2.2.tbd。
- 再来到Build Settings,我们可以搜索一下,找到Header Search Paths,添加路径“/usr/include/libxml2”。
- 再找到Other Link Flags,添加“-lxml2“
- 还有就是如果你下载的GDataXML是不支持ARC的,那么你就要像上面那样去添加“-fno-objc-arc”,这个视你下载的GDataXML包版本而定。
再次编译,通过。
注意:用这个解析你要对你的XML文件的节点(也就是字典的键值非常了解)
代码附上:
(1)由data转为的xml文件
NSData * data = [NSDatadataWithContentsOfURL:[NSURLURLWithString:requestUrl]];
GDataXMLDocument *xmlDoc = [[GDataXMLDocumentalloc] initWithData:dataoptions:0 error:nil];
GDataXMLElement *rootElement = [xmlDoc rootElement];
NSArray *first = [rootElement elementsForName:@"vd"];
if (first.count > 0) {
NSArray *second = [[firstobjectAtIndex:0] elementsForName:@"vi"];
if (second.count > 0) {
NSArray *third = [[second objectAtIndex:0] elementsForName:@"url"];
if (third.count > 0) {
targetUrl = [[third objectAtIndex:0]stringValue];
}
}
}
(2)其实是一样的,这个可能会更详细一点:- (IBAction)GDataXML:(id)sender {
NSString *path = [[NSBundlemainBundle] pathForResource:@"test"ofType:@"xml"];
NSData *data = [[NSDataalloc]initWithContentsOfFile:path];
//对象初始化
GDataXMLDocument *doc = [[GDataXMLDocumentalloc]initWithData:dataoptions:0 error:nil];
//获取根节点
GDataXMLElement *rootElement = [doc rootElement];
//获取其他节点
NSArray *students = [rootElement elementsForName:@"student"];
//初始化可变数组,用来显示到textView
self.GDatatext = [[NSMutableString alloc]initWithString:@""];
for (GDataXMLElement *studentin students) {
//获取节点属性
GDataXMLElement *pidElement = [[studentelementsForName:@"pid"]objectAtIndex:0];
NSString *pid = [pidElement stringValue];
GDataXMLElement *nameElement = [[studentelementsForName:@"name"]objectAtIndex:0];
NSString *name = [nameElement stringValue];
GDataXMLElement *sexElement = [[studentelementsForName:@"sex"]objectAtIndex:0];
NSString *sex = [sexElement stringValue];
GDataXMLElement *ageElement = [[studentelementsForName:@"age"]objectAtIndex:0];
NSString *age = [ageElement stringValue];
//调整一下姿势,添加到可变长字符串~~
NSString *t = [NSStringstringWithFormat:@"学号:%@姓名:%@性别:%@年龄:%@\n", pid, name, sex, age];
[self.GDatatext appendString:t];
}
self.textView.text = self.GDatatext;
}
- 利用GDataXML进行XML文件解析
- 利用GDataXml解析xml
- GDataXML解析XML
- GDataXML解析XML文档
- GDataXML解析XML
- IOS GDataXML 解析xml
- GDataXML-HTML 解析XML
- iOS中如何利用GDataXML对XML文档进行读写
- XML解析之DOM解析——利用第三方框架GDataXML进行XML解析,以及保存代码块的技巧
- Iphone 使用 GDataXml 解析通过HTTP获取的XML文件
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- 使用GDataXML解析XML文档
- TopCoder SRM 637 Div2 B
- 银行自动存取一体机例题
- WebVeiw 宽度自适应
- LeetCode 316: Remove Duplicate Letters
- ofbiz erp 的整体方案设计
- 利用GDataXML进行XML文件解析
- 51nod 1283 最小周长
- BZOJ 1670 [Usaco2006 Oct]Building the Moat护城河的挖掘
- 第15周实践项目1——程序填空
- 解决Linux连不上外国软件源或者软件源失效
- Codeforces #1 A
- 第19章:special operators
- 学习整理01-java将汉字转换为拼音
- Android开源框架——依赖注入Dagger