ios--XML应用

本文主要介绍了XML在iOS中的应用,包括XML的基本概念如解析和解析器类型,如DOM和SAX。接着,详细讨论了Cocoa中的XML解析器,特别是DOM解析器的使用,包括初始化方法、XPath查询、节点信息获取以及节点间的父子关系和属性值的获取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

XML

  1. 一. 基本概念
  1. 1. 解析:从XML文档中分析出构,程可在程序中使用的形式的操作被成解析。行解析理的程序被称作解析器。
  2. 2. XML解析器的种
  1. 1) DOM

XML次关系即为树结构,DOM解析器能直接操作树结构;

  1. 2) SAX

遵循从XML部开始解析的思想,在入内容的同时报果,又称为时间驱动隙器;

  1. 二. Cocoa中的解析器
  1. 1.
  1. 1) DOM解析器支持:


  1. 2) SAX解析器:承关系:

NSObjectNSXMLParser

  1. 2. DOM解析器的详细说
  1. 1) XML文档的解析器NSXMLDocument

解析之前先行初始化,初始化一般有三种方法,URL(NSURL)、数据(NSData),字符串(NSString)等形式;

① 使用URL时,可以指定网上的XML文档,如果是本地的文档,在URL中指定域,即以:“域://路径”形式写

②NSData;可以使用读入文件后的NSData数据(利用NSData的dataWithContentsOfFile方法)

③ mask的常用常量列表:NSXMLDocumentTidyHTML,以XML的方式进行解析;

NSXMLDocumentTidyXML 将不正确的XML转化为正确的XML进行解析;

NSXMLDocumentValidate 使用DTD或XML Schema进行验证

NSXMLDocumentInclude 读入在XInclude中指定的文档;

  NSXMLDocument *document;

    NSError *error;

    document = [[NSXMLDocument alloc] initWithContentsOfURL:url options:0 error:error];

    

    

    if(!document){

        NSLog(@"error %@",[error localizedDescription]);

    }

mask选项指定为0,即没有指定任何选项;

  1. 2) XPath

XML文档解析后,下一步就是去的目的点了;两种方式:一是跟家父子关系行遍。首先取得父点,然后是其子点,如此反复;二,找到从根点到目的节点的路径,然后根据此路径获得节点信息;“/rss/channel/item//title”这样的路径程序XPath

//

NSArray *nodes;

NSError *error;

Node =[document nodesForXpath:@”/rss/channel/item/title” error:error];

  1. 3) 点信息

常用方法名:

例子:<title>Cocoa</titile>

kind NSXMLElementKind

name title

stringValue Cocoa

XMLString <title>Cocoa</titile>

  1. 4) 点的父子关系

常用的方法:

Parent

取得父

childCount

取得子点的个数

Children

以数的形式取得子

childAtIndex: (unsigned)index

取得由索引index指定的

previousSibling

取得上一个兄弟

nextSibling

取得下一个兄弟

取得点所属NSXMLDocument的方法:

RootDocument

取得当前点的NSXMLDocument

rootElement

取得当前文档的根

例子:

-[(void)displayNodeName:(NSXMLNode *)node] {

        NSLog(@"name is %@",[node name]);

        

        //取得子节点

        NSEnumerator *enumerator;

        NSXMLNode *childNode;

        enumerator = [[node children] objectEnumerator];//注意遍历的方法

        while (childNode = [enumerator nextObject]) {

            

            [self displayNodeName:childNode];

        }

    }

  1. 5) 属性的取得:
  • - (NSXMLNode *)attributeForName:(NSString *)name

通过名称取得属性节点

  • - (NSArray *)attributes

取得属性节点的数组;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值