RaptureXML 无法访问子标签

Posted

技术标签:

【中文标题】RaptureXML 无法访问子标签【英文标题】:RaptureXML cannot get to children tags 【发布时间】:2012-08-27 21:40:55 【问题描述】:

我正在使用 raptureXML 从我的 XML <forecast .../> 标签中提取数据。

这是 XML

<?xml version="1.0" ?>
<weatherdata>
<weather weatherlocationname="Chicago, IL">

<forecast low="67" high="86" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-27" day="Monday" shortday="Mon" precip="0" />

<forecast low="66" high="82" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-28" day="Tuesday" shortday="Tue" precip="0" />

<forecast low="66" high="82" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-29" day="Wednesday" shortday="Wed" precip="0" />

<forecast low="68" high="88" skycodeday="32" skytextday="Sunny (Clear)" date="2012-08-30" day="Thursday" shortday="Thu" precip="0" />

<forecast low="70" high="90" skycodeday="34" skytextday="Mostly Sunny" date="2012-08-31" day="Friday" shortday="Fri" precip="0" />

<toolbar timewindow="60" minversion="1.0.1965.0" />
</weather>
</weatherdata>

我将此代码用于 raptureXML

RXMLElement *rootXML = [RXMLElement elementFromXMLString:XML encoding:NSUTF8StringEncoding];

[rootXML iterate:@"forecast" usingBlock:^(RXMLElement *element) 
    
        NSString *high = [element attribute:@"low"];
        NSLog(@"high: %@", high);
    ];

    NSArray *forecast = [rootXML children:@"forecast"];
    NSLog(@"[forecast count]: %d", [forecast count]);

很简单吧?但问题是它没有找到预测标签,即NSLog(@"high: %@", high);[forecast count] 为零。

我错过了什么?

【问题讨论】:

我没用过 RaptureXML,但看起来你漏掉了一层。 rootXML 可能是weatherdata,所以它没有forecast 孩子,因为它唯一的孩子是weather,它确实有forecast 孩子。尝试添加RXMLElement *weather = [rootXML child:@"weather"];。然后在其余代码中使用weather 而不是rootXML 你完全正确!将此添加为答案,我会接受。它按照您的建议工作。 【参考方案1】:

我没有使用过 RaptureXML,但看起来你错过了一层。 rootXML 可能是weatherdata,所以它没有forecast 孩子,因为它唯一的孩子是weather,它确实有forecast 孩子。尝试添加:

RXMLElement *weather = [rootXML child:@"weather"];

然后在其余代码中使用weather 而不是rootXML

像这样:

RXMLElement *rootXML = [RXMLElement elementFromXMLString:XML encoding:NSUTF8StringEncoding];

RXMLElement *weather = [rootXML child:@"weather"];

[weather iterate:@"forecast" usingBlock:^(RXMLElement *element) 

    NSString *high = [element attribute:@"low"];
    NSLog(@"high: %@", high);
];

NSArray *forecast = [weather children:@"forecast"];
NSLog(@"[forecast count]: %d", [forecast count]);

【讨论】:

以上是关于RaptureXML 无法访问子标签的主要内容,如果未能解决你的问题,请参考以下文章

python多处理子进程无法访问全局变量

Swift:无法从 xib 访问子视图

无法访问 magnolia cms 中的链接和子页面

Instagram 无法访问回调 URL

Instagram 无法访问回调 URL

Instagram 无法访问回调 URL