【问题标题】:TBXML with NSData in XcodeXcode 中带有 NSData 的 TBXML
【发布时间】:2014-07-17 01:11:06
【问题描述】:

我有一个返回非常扁平的 XML 文件的 URL:<entries><title>val1</title><author>Bob</author></entries> 代码运行正常:

NSString *urlString = [NSString stringWithFormat:@"http://www.somesite.php?qid=%d", __inum];
NSLog(@"urlString = %@", urlString);
NSURLResponse * response = nil;
NSError * error = nil;
NSURLRequest * urlRequest = [NSURLRequest requestWithURL: [NSURL URLWithString:urlString]];
NSData * myData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];

NSLog(@"%@", myData);

TBXML *sourceXML = [[TBXML alloc] initWithXMLData:myData error:nil];

TBXMLElement *rootElement = sourceXML.rootXMLElement;

if (rootElement) {

    NSLog(@"Root element found...");

TBXMLElement *qaElement1 = [TBXML childElementNamed:@"title" parentElement:rootElement];
if (qaElement1) {
    NSString *idAttribute = [TBXML valueOfAttributeNamed:@"title" forElement:qaElement1];
    NSLog(@"Got to the 1st call for idAttribute... %@", idAttribute);
}
else { NSLog(@"There is no value for title..."); }

}

else { NSLog(@"Root element must be null..."); }

}

它找到根元素并调用 valueOfAttribute:@"title" 但值始终为 (null)。

所以我的问题是:我是否必须做一些事情才能将 NSData 转换回可读(我的印象是 TBXML 提供了与 NSData 一起使用的选项并进行了计算)。如果不是,从“myData”创建(然后使用)UTF8 中的 NSString 的调用是什么?

【问题讨论】:

    标签: objective-c tbxml


    【解决方案1】:

    从 'myData' 以 UTF8 格式创建(然后使用)NSString 的调用是什么?

    使用initWithData:encoding:

    NSString *str = [[NSString alloc] initWithData:myData encoding:NSUTF8StringEncoding];
    

    或者stringWithUTF8String:,如果你知道myData是空终止的UTF8字符串

    NSString *str = [NSString stringWithUTF8String:[myData bytes]];
    

    不要不要忽略错误。

    NSError *error = nil;
    TBXML *sourceXML = [[TBXML alloc] initWithXMLData:myData error:&error];
    if (error) {
         // handle it, at least log it
    }
    

    【讨论】:

    • 然后使用TBXML... initWithXMLString:str...?
    • @user3741598 是的。并且您可以记录 XML 字符串以确保它是您所期望的。
    • Brian,这行得通,我可以读取我的 XML 文件 - 但仍然为 idAttribute 抛出 (null)。那应该是 val 中的 val,对吗?我会继续四处寻找......
    • 我从未使用过 tbxml。但属性title<Element title='val' />
    • 我试过你的格式 - 甚至没有抛出(空)。给出的错误意味着它没有找到根。奇怪。
    猜你喜欢
    • 1970-01-01
    • 2011-10-29
    • 2013-10-17
    • 1970-01-01
    • 1970-01-01
    • 2020-01-27
    • 2012-07-06
    • 2011-11-17
    • 1970-01-01
    相关资源
    最近更新 更多