xml 数据的 DOM 解析方式

需要使用第三方工具

#import "GDataXMLNode.h"
// 懒加载,使用的时候在进行初始化
// 相对而言的是属性才有懒加载,需要重写getter方法
- (NSMutableArray *)xmlDOMArray
{
    if (_xmlDOMArray == nil) {
        _xmlDOMArray = [NSMutableArray array];
    }
    return _xmlDOMArray;
}
@property (nonatomic, strong) NSMutableArray *xmlDOMArray;
- (IBAction)XMLDOMButtonDidClicked:(UIButton *)sender {
    // 1、拿到 xml 文件的路径
    NSString *path = [[NSBundle mainBundle] pathForResource:@"myData" ofType:@"xml"];

    // 2、根据路径获取文件内容为 NSData 对象
    NSData *data = [[NSData alloc] initWithContentsOfFile:path];

    // 3、根据 data 初始化一个 GDataXMLDocument 对象 先(引入第三方类库并且)
    GDataXMLDocument *xmlDocument = [[GDataXMLDocument alloc] initWithData:data options:0 error:nil];

    // 4、拿到根节点
    GDataXMLElement *rootElement = [xmlDocument rootElement];

    // 5、开始解析
    NSArray *studentArray = [rootElement elementsForName:@"student"];

    for (GDataXMLElement *element in studentArray) {

        // 拿到 name 节点 只有一个节点
        GDataXMLElement *nameElement = [[element elementsForName:@"name"] firstObject];
        // 拿到 sex 节点
        GDataXMLElement *sexElement = [[element elementsForName:@"sex"] firstObject];
        // 拿到 phone 节点
        GDataXMLElement *phoneElement = [[element elementsForName:@"phone"] firstObject];
        // 创建一个modal
        StudentModal *modal = [[StudentModal alloc] init];

        // 取出节点的值
        modal.name = [nameElement stringValue];
        modal.sex = [sexElement stringValue];
        modal.phoneNumber = [phoneElement stringValue];

        // 使用了懒加载,不能用 _xmlDOMArray
        [self.xmlDOMArray addObject:modal];
    }
    for (StudentModal *student in self.xmlDOMArray) {
        NSLog(@"%@, %@, %@", student.name, student.sex, student.phoneNumber);
    }
    [self.xmlDOMArray removeAllObjects];

}

版权声明:本文为outlan原创文章,未经博主允许不得转载。

时间: 2024-10-01 06:13:19

xml 数据的 DOM 解析方式的相关文章

用java操作XML文件(DOM解析方式)

XML 可扩展标记语言(Extensible Markup Language),是独立于软件和硬件的传输工具. XML的作用: (1)用作配置文件 (2)简化数据共享 (3)简化数据传输 XML DOM解析方式 在java工程中导入dom4j.jar包. (一)用java读XML文件 <1>创建SAXReader对象. RAXReader reader=new RAXReader(); <2>调用RAXReader的Document read(File file)方法,获取xml文

XML系列:(4)XML解析-JAXP的DOM解析方式读取XML

DOM.SAX和StAX只是解析方式,没有API. JAXP是SUN提供的一套XML解析API.    JAXP(Java API for XMLProcessing,意为XML处理的Java API) JAXP很好的支持DOM和SAX解析. JAXP开发包是JAVASE的一部分,它由java.xml.org.w3c.dom.org.xml.sax包及其子包组成 products.mxl <?xml version="1.0" encoding="UTF-8"

XML系列:(5)XML解析-JAXP的DOM解析方式修改XML

DOM.SAX和StAX只是解析方式,没有API. JAXP是SUN提供的一套XML解析API.JAXP(Java API for XMLProcessing,意为XML处理的Java API) JAXP很好的支持DOM和SAX解析. JAXP开发包是JAVASE的一部分,它由java.xml.org.w3c.dom.org.xml.sax包及其子包组成 1.以DOM解析方式修改XML 1.1.将Document树保存到文件中 package com.rk.xml.e_jaxp_dom_writ

mybatis 解析配置文件(一)之XML的DOM解析方式

简介 在之前的文章<mybatis 初步使用(IDEA的Maven项目, 超详细)>中, 讲解了mybatis的初步使用, 并总结了以下mybatis的执行流程: 通过 Resources 工具类读取 mybatis-config.xml, 存入 Reader: SqlSessionFactoryBuilder使用上一步获得的reader创建SqlSessionFactory对象; 通过 sqlSessionFactory 对象获得SqlSession; SqlSession对象通过selec

Xml的三种解析方式

XML的三种解析方式:DOM.SAX.PULL解析 废话不说上代码: package com.minimax.xmlparsedemo; import java.io.InputStream; import java.util.List; import android.os.Bundle; import android.app.Activity; import android.content.res.AssetManager; import android.util.Log; import an

xml中俩种解析方式

两种解析方式 1.from xml.etree import ElementTree as ET 利用ElementTree模块下的xml方法可以把一个字符串类型的东西转换成Element类,从而利用Element类下面的方法 xml(字符串)解析方式只能读不能写 from xml.etree import ElementTree as ET # 打开文件,读取XML内容 str_xml = open('xo.xml', 'r').read() # 将字符串解析成xml特殊对象,root代指xm

XML的两种解析方式逐行解析(SAX解析)节点解析(DOM解析);

SAX逐行解析 SAX:SimpleAPIfor XML.基于事件驱动的解析方式,逐行解析数据.(采用协议回调机制) NSXMLParser是iOS自带的XML解析类.采用SAX方式解析数据 解析过程由NSXMLParserDelegate协议方法回调 解析过程:开始标签->取值->结束标签->取值 DOM解析 DOM:DocumentObjectModel(文档对象模型).解析时需要将XML文件整体读入,并且将XML结构化成树状,使用时再通过树状结构读取相关数据 GDataXMLNod

XML解析——Java中XML的四种解析方式

 XML是一种通用的数据交换格式,它的平台无关性.语言无关性.系统无关性.给数据集成与交互带来了极大的方便.XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已. XML的解析方式分为四种:1.DOM解析:2.SAX解析:3.JDOM解析:4.DOM4J解析.其中前两种属于基础方法,是官方提供的平台无关的解析方式:后两种属于扩展方法,它们是在基础的方法上扩展出来的,只适用于java平台. 针对以下XML文件,会对四种方式进行详细描述: 1 <?xml version="1.

XML的四种解析方式

基础方法: DOM.SAX DOM:与平台无关的官方解析方式 SAX:基于事件驱动的解析方式 扩展方法:JDOM.DOM4J(在基础的方法上扩展的,只有Java能够使用的解析方式) DOM: 一次性解析完毕! import java.io.FileOutputStream; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import javax.xml.tran