#import "ViewController.h"
#import "DDXML.h"

@interface ViewController ()

@end

@implementation ViewController

/*
 解析XML:开源框架:KissXML  依赖:libxml2.2.dylib(项目配置-->General-->Linked Frameworks and Libraries-->点击+号-->输入libxml2.2.dylib-->add)
 
 如果使用libxml2.2.dylib,则需要在header search path中添加路经:(Build Settings --> Search Paths --> Header Search Paths中添加/usr/include/libxml2-->回车)
 
 */

- (void)viewDidLoad {
    [super viewDidLoad];

//1.组装XML
    [self builXML];
   
    //2.解析XML
    //解析XML的方式:
    //DOM:  当前标签量少的时候
    //SAX:  当前标签量大的时候
    [self parseXML];
}

/**
 <movie country="USA" >  // 主标签:属性:country:USA
 <title>X战警</title>   //子标签title: X战警
 <actor>Bob Dylan</actor> //子标签 actor:  Bob Dylan
 </movie>
*/

//组装XML
- (void)builXML {

//1.创建标签
    DDXMLElement *element = [DDXMLElement elementWithName:@"movie"];
   
    //设置属性
    DDXMLDocument *document = [DDXMLDocument attributeWithName:@"country" stringValue:@"USA"];
    [element addAttribute:document];
   
   
    //2.添加子标签
    DDXMLDocument *title = [DDXMLDocument elementWithName:@"title" stringValue:@"X战警"];
    DDXMLDocument *actor = [DDXMLDocument elementWithName:@"actor" stringValue:@"Bob Dylan"];
   
    [element addChild:title];
    [element addChild:actor];
   
//    NSLog(@"element:%@",element);
}

- (void)parseXML {
 //获取

   
NSString *filePath = [[NSBundle mainBundle]pathForResource:@"file.xml" ofType:nil];
   
    NSData *data = [NSData dataWithContentsOfFile:filePath];
   
//解析
    DDXMLDocument *doc = [[DDXMLDocument alloc]initWithData:data options:0 error:nil];
    NSLog(@"%@",doc);
    //xml文件中所有的价格
//    NSString *xpath = @"/catalog//price";
    //同上
//    NSString *xpath = @"/catalog/*/price";
   
    // cd下的所有内容
    NSString *xpath = @"//*";

NSArray *arr = [doc nodesForXPath:xpath error:nil];
   
    NSLog(@"--%@",arr);
   
    for (DDXMLElement *element in arr) {
       
        NSLog(@"%@",element.stringValue);

    }
   
   
}
@end
 
 ----------------------------------------分割线-------------------------------------------------
//XML文档
 
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
    <cd1 country="USA">
        <title>Empire Burlesque</title>
        <artist>Bob Dylan</artist>
        <price>10.90</price>
    </cd1>
    <cd2 country="UK">
        <title>Hide your heart</title>
        <artist>Bonnie Tyler</artist>
        <price>9.90</price>
    </cd2>
    <cd3 country="USA">
        <title>Greatest Hits</title>
        <artist>Dolly Parton</artist>
        <price>9.90</price>
    </cd3>
</catalog>
 

基本XML解析---编写的更多相关文章

  1. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  2. 使用由 Python 编写的 lxml 实现高性能 XML 解析

    lxml 简介 Python 从来不出现 XML 库短缺的情况.从 2.0 版本开始,它就附带了 xml.dom.minidom 和相关的 pulldom 以及 Simple API for XML ...

  3. 【Android】实现XML解析的几种技术

    本文介绍在Android平台中实现对XML的三种解析方式. XML在各种开发中都广泛应用,Android也不例外.作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能. 在 ...

  4. iOS开发——网络篇——JSON和XML,NSJSONSerialization ,NSXMLParser(XML解析器),NSXMLParserDelegate,MJExtension (字典转模型),GDataXML(三方框架解析XML)

    一.JSON 1.JSON简介什么是JSONJSON是一种轻量级的数据格式,一般用于数据交互服务器返回给客户端的数据,一般都是JSON格式或者XML格式(文件下载除外) JSON的格式很像OC中的字典 ...

  5. JAVA基础学习之XMLCDATA区、XML处理指令、XML约束概述、JavaBean、XML解析(8)

    1.CDATA区在编写XML文件时,有些内容可能不想让解析引擎解析执行,而是当作原始内容处理.遇到此种情况,可以把这些内容放在CDATA区里,对于CDATA区域内的内容,XML解析程序不会处理,而是直 ...

  6. 【Java】XML解析之DOM

    DOM介绍 DOM(Document Object Model)解析是官方提供的XML解析方式之一,使用时无需引入第三方包,代码编写简单,方便修改树结构,但是由于DOM解析时是将整个XML文件加载到内 ...

  7. iOS -数据库网络之xml解析之远程解析XML

    1.IOS中XML文件获取    //设置远程访问地址     NSURL *url=[NSURL URLWithString:@""];       //创建动态URL请求,并初 ...

  8. iOS -数据库网络之xml解析

    XML文件有2种解析方式 1.基于文档(document) 2.基于事件(sax)   1.IOS中XML文件获取   首先要将XML导入工程中 在ViewController的按钮事件中,代码如下: ...

  9. Android中的三种XML解析方式

    在Android中提供了三种解析XML的方式:SAX(Simple API XML),DOM(Document Objrect Model),以及Android推荐的Pull解析方式.下面就对三种解析 ...

随机推荐

  1. c语言冒泡排序

    在C语言中,常用的排序算法有:冒泡排序.快速排序.插入排序.选择排序.希尔排序.堆排序以及归并排序等等. 冒泡排序基本概念:  依次比较相邻的两个数,将小数放在前面,大数放在后面. #include ...

  2. 说一说line-height

    line-height这个样式相信大家一定不会陌生,我们经常用它来让文本上下居中,这样做一般不出出现什么问题,但是如果对这个属性不是很熟悉的话,可能会踩到一些坑,今天亲自去试验了一下,并总结了一下li ...

  3. C# 将文件嵌入DLL 。Log4net 配置

    最近在弄使用Log4net记录日志. 将配置文件封装到的DLL中. 封装步骤: 1.将配置文件添加到类库中. 2.在配置文件上右键,选择属性. 3. 此时生成类库.DLL中就存在该配置文件啦.如图: ...

  4. JS验证字符长度

    function getStrLength(str) { var cArr = str.match(/[^\x00-\xff]/ig); return str.length + (cArr == nu ...

  5. Android 遮罩层效果

    (用别人的代码进行分析) 不知道在开发中有没有经常使用到这种效果,所谓的遮罩层就是给一张图片不是我们想要的形状,这个时候我们就可以使用遮罩效果把这个图片变成我们想要的形状,一般使用最多就是圆形的效果, ...

  6. 移动开发tip

    input点击出现背景色和边框,加入样式 -webkit-tap-highlight-color: rgba(255,255,255,0); ios下按钮糊掉,样式表不怎么起作用,使用-webkit- ...

  7. 移动web前端小结(一)--摘自小鹿_同学

    一.框架 框架:Bootstrap+HTML5 Boilerplate. 两个框架整合到一起可以看一下这位大神的文章:<使用 Bootstrap 和 HTML5 Boilerplate 开始一个 ...

  8. Win7 64位 VS2015环境编译NanoVG

    书接上回,Cairo编译好使用后,发现简单的每帧画100条随机线段就卡得不行,装了个gooreplacer( http://liujiacai.net/gooreplacer/ )上stackover ...

  9. XAF ObjectSpace保存时添加记录

    点击保存按钮时自动添加相关记录(用于界面查看),另外还有Audit控件可使用,此处只是一个简单的功能. 新建一个VC并关联到相关的View,代码如下: public partial class Gon ...

  10. 通过inflate获取布局,设置layoutparams无效

    给ll——addtiem当设置layoutparams无效时,试着修改上一个布局的属性