ios--XML应用
XML应用
XML的层次关系即为树结构,DOM解析器能直接操作树结构;
遵循从XML头部开始解析的思想,在读入内容的同时报告结果,又称为时间驱动的间隙器;
NSObjectNSXMLParser
解析之前先进行初始化,初始化一般有三种方法,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 = [[NSXMLDocumentalloc]initWithContentsOfURL:url options:0error:error];
if(!document){
NSLog(@"error %@",[errorlocalizedDescription]);
}
mask选项指定为0,即没有指定任何选项;
XML文档解析后,下一步就是去的目的节点了;两种方式:一是跟家父子关系进行遍历。首先取得父节点,然后是其子节点,如此反复;二,找到从根节点到目的节点的路径,然后根据此路径获得节点信息;“/rss/channel/item//title”这样的路径程序XPath
//
NSArray *nodes;
NSError *error;
Node =[document nodesForXpath:@”/rss/channel/item/title” error:error];
常用方法名:
例子:<title>Cocoa</titile>
kind NSXMLElementKind
name title
stringValue Cocoa
XMLString <title>Cocoa</titile>
常用的方法:
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];
}
}
通过名称取得属性节点
取得属性节点的数组;