#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. Java(接口与继承)动手动脑

    1>继承条件下的构造方法调用 运行 TestInherits.java 示例,观察输出,注意总结父类与子类之间构造方法的调用关系修改 Parent 构造方法的代码,显式调用 GrandParen ...

  2. 寻找子域名的IP段

    校网网络安全检测,第一步,我们做的工作是找出学校所有的IP段.  当然,期间我们可以利用软件帮助我们扫描,但是一款软件往往是不够的,因为它全面,所以我们用了IISPutScanner,subDomai ...

  3. git 调用 Beyond Compare

    转载自  http://www.jackness.org/2015/03/31/git-%E8%B0%83%E7%94%A8-%E7%AC%AC%E4%B8%89%E6%96%B9%E5%AF%B9% ...

  4. 清空IE缓存

    1.打开IE Internet选项 点击设置 2.打开临时文件 点击 查看文件 将目录下的 文件全部删除  重新打开网站即可 到此IE缓存就被删除.

  5. js ShowDialogModal 关闭子页面并刷新父页面,保留查询条件

    不知道大家有没有碰到类似的问题,当时的你是什么思路来处理这个问题呢?是url,session,cookie,还是…… 今天笔者就遇到了这个问题,当时的想法如:url,session,cookie都尝试 ...

  6. PHP获取具有相同name的多个input表单信息

    首先是表单应该这样写,注意每个 name="name[]"后面是有一个方括号的.这是PHP特有的获取具有相同name的多个input元素value的方法.(复选框也是采用这种方法) ...

  7. 消除a标签点击后产生的虚线框

    为a标签添加这条属性: a:focus {outline:none;-moz-outline:none;}

  8. ng animate

    要在angular中加入动画必须引入angular.animate.js插件,然后就可以在module中引入ngAnimate模块.如: var module1 = angular.module('m ...

  9. NI Labview 将图形化系统设计用于肿瘤治疗

    NI Labview 将图形化系统设计用于肿瘤治疗 - Jeff Stevens, Sanarus 挑战:在严格的规则条例范围内保持设计过程的情况下,为通过FDA认证的等级II医疗设备进行设计.原型并 ...

  10. 快速排序 - C语言

    看了这本<数据结构与算法分析>中的快速排序. 写下自己理解后的代码,以备后用. #include "stdio.h" void insertSort(int arr[] ...