ios开发如何解析xml

2023-12-14

所以我知道如何解析一些 XML 结构,但我目前正在尝试解析这个特定的 xml 结构,这与我习惯的有点不同。

通常我会解析类似的东西

<xml>
  <data>
    <name>Forrest</name>
    <age>25</name>
    <username>forrestgrant</username>
  </data>
</xml>

但现在我正在使用一些像这样的xml..

<xml>
  <data name="Forrest" age="25" username="forrestgrant" />
  <other value="6" />
</xml>

当这些变量的结构如下时,我如何访问它们? 这就是我通常处理此任务的方式,它是基于搜索标题标签并从每个标签获取数据......但是我现在试图弄清楚如何解析这种其他样式的 xml。

- (void)startTheParsingProcess:(NSData *)parserData
{
    [myDataArray release]; // clears array for next time it is used.
    myDataArray = [[NSMutableArray alloc] init]; //initalizes the array

    NSXMLParser *parser = [[NSXMLParser alloc] initWithData:parserData]; //incoming parserDatapassed to NSXMLParser delegate which starts parsing process 

    [parser setDelegate:self];
    [parser parse]; //Starts the event-driven parsing operation.
    [parser release];
}

- (void)parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName attributes:(NSDictionary *)attributeDict
{
    if ([elementName isEqual:@"item"]) {
        // NSLog(@"Found title!");
        itemString = [[NSMutableString alloc] init];
    }
}

- (void)parser:(NSXMLParser *)parser foundCharacters:(NSString *)string
{
    [itemString appendString:string];
}

- (void)parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName
{
    if ([elementName isEqual:@"item"]) {
        //NSLog(@"ended title: %@", itemString);
        [myDataArray addObject:itemString]; //this is where i pass the values over to my array.

        [itemString release];
        itemString = nil;
    }
}

- (void)parserDidEndDocument:(NSXMLParser *)parser
{
    // Passes myDataArray to the method that will sort and display the array into a uitableview.
    [self startSortingTheArray:myDataArray];
}

任何帮助将不胜感激..


上面的 xml 数据将数据提供为 xml 元素上的属性。

此回调方法使您可以访问作为键值字典 (attributeDict) 的属性。

(void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementName 
  namespaceURI:(NSString *)namespaceURI 
  qualifiedName:(NSString *)qualifiedName 
  attributes:(NSDictionary *)attributeDict

在该方法中 NSLog 字典以查看值:

NSLog(@"attributes: %@", attributeDict);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ios开发如何解析xml 的相关文章

随机推荐

  • 使用窗口迭代列表

    假设我们有这个列表 L 1 2 3 4 5 6 7 8 n 我们希望通过列表中包含 3 个元素的窗口获得此结果 l1 1 2 3 l2 2 3 4 l3 3 4 5 l4 4 5 6 l6 5 6 7 l7 6 7 8 直到我们迭代数组 并
  • OpenCV CascadeClassifier 错误

    我正在尝试通过网络摄像头进行人脸检测 但出现错误 级联分类器错误 经过一些测试 我发现这行代码产生错误 CascadeClassifier face cascade new CascadeClassifier 我得到的错误是 Excepti
  • 用指针反转 C 中的字符串文字[重复]

    这个问题在这里已经有答案了 我正在尝试使用指针反转字符串文字 通过我的代码收到 SIGSEGV 信号 head tail line char reverse char input int n char temp char head inpu
  • Google Appengine 每日预算未反映在配额中

    亲爱的 AppEngine 人员 我知道所有 AppEngine 支持已转移到 StackOverflow 如果我弄错了 那么很抱歉在这里发布此内容 我有一个非常严重的问题 希望您能帮助我解决 昨天 我在我的应用程序 friendbazaa
  • 如何通过java POI api从Excel工作表中删除所有公式?

    我们可以通过 cell setCellFormula null 从一个单元格中删除公式 但如果我想让整个表格公式免费 See Apache POI 站点这完全回答了你的问题
  • 如何在 PHP 中将一个图像包含在另一个图像中?

    如何在 PHP 中将一个图像包含在另一个图像中 我想像 twitterbackgrounds com 个性化背景那样做到这一点 有一张主图像 我们可以上传四张个人图像 之后它将显示为主图像的水印 我自己从来没有用过GD 但是看看手册中的示例
  • UWSGI 杀死工人的速度太快

    我在我的 web 应用程序中遇到了一个错误 该错误已经工作了一年多了 当我在新实例上切换到 UWSGI 以加快速度时 我遇到了这个错误 我的应用程序有 快速添加 模式窗口 允许用户将新客户添加到数据库中 并立即转到该用户的购物车 所以 该模
  • 在 VBA 中使用 Unicode 文件名(使用 Dir、FileSystemObject 等)

    I am 迭代通过文件夹中的文件 这意味着我不知道文件夹中的名称 并且有一个带有波兰语的文件 特点 The Dir函数将其转换为l这意味着以后无法找到该文件名 我已将要为其分配 dir 值的 var 声明为字符串 我也尝试过 FSO 和 g
  • 按特定键对多维数组进行排序[重复]

    这个问题在这里已经有答案了 我有一个数组 Array 0 gt stdClass Object user id gt 1 ID gt 1 user login gt admin display name gt admin user emai
  • 将每条记录的所有列连接成一个条目

    我正在尝试将表的记录提取到 csv 文件中 SQL 查询很简单 SELECT FROM MY TABLE NAME 给出了假设的记录集 A B C D E F G H I J K L 我想要的是一个记录集 其中所有列都连接在一起 例如 A
  • PHP:将逗号分隔的值对字符串转换为数组

    我有逗号分隔的值对 我想将其转换为 php 中的关联数组 例子 Age 30 Weight 80 Height 180 转换成 Echo obj Weight 80 我的值没有用引号括起来有什么区别吗 我是说 重量 80 VS 重量 80
  • 设置scendantFocusability=“blocksDescendants”后,列表视图行中的文本视图无法单击

    我为列表视图编写了自定义项目布局 该布局有许多小部件 有些小部件有自己的点击监听器 当我单击该行时 有时列表视图的 onListItemClick 起作用 但有时不起作用 经过我一段时间的搜索 我找到了一种方法 设置机器人 descenda
  • 当游乐场被禁用时,apollo-server 返回缺少 GET 查询

    当我效仿的时候production aka playground is disabled 然后我回到我的根 http localhost 9000 我收到以下回复 400 Bad Request GET query missing 有没有办
  • 将当前类作为返回类型注释[重复]

    这个问题在这里已经有答案了 在 python 3 中 我可以创建参数并返回类型注释 例子 class Graph def init self V int E int edges list pass classmethod def fromf
  • 如何创建带有列标题和行标题的 UICollectionView?

    我想创建一个如下所示的 UICollectionView 它不可滚动或可编辑 我目前想知道如何为此编写布局 我猜它不会是的子类UICollectionViewFlowLayout 我可以想到很多方法 但很好奇是否有任何 正确 的方法 这些单
  • 为什么 PHPUnit 代码覆盖率不报告未调用的函数?

    我正在尝试获取我的一个项目的代码覆盖率 但未调用的函数和类不会纳入覆盖率计算 当大块代码被忽略时 很难看出哪些内容 很多 没有被覆盖 在下图中 我希望前三个函数的主体以红色突出显示 至少在执行的函数中未执行的行显示为红色 无论如何 我正在使
  • 如何从ContentView获取ContentPage的BindingContext?

    我有以下 Contentpage content 我在其中设置了某些绑定上下文
  • 影响测量或影响排列

    我正在创建自定义控件 如果依赖项属性之一发生更改 我需要更新布局 我可以使用FrameworkMetadataProperty AffectsMeasure or FrameworkMetadataProperty AffectsArran
  • C++ 如何将输入值分配给 std::bitset 参数?

    我想制作一个简单的程序 它将从输入中获取位数并作为输出显示二进制数 写在给定的位上 例如 我输入 3 它显示 000 001 010 011 100 101 110 111 我遇到的唯一问题是第二个for 循环 当我尝试分配变量时位集bit
  • ios开发如何解析xml

    所以我知道如何解析一些 XML 结构 但我目前正在尝试解析这个特定的 xml 结构 这与我习惯的有点不同 通常我会解析类似的东西