gpt4 book ai didi

iphone - 与 NSData 一起使用时 NSXML 解析错误

转载 作者:行者123 更新时间:2023-11-29 04:51:18 30 4
gpt4 key购买 nike

我有一个简单的 XML 文件,其中包含产品的子集列表。当我从 iOS 应用程序包加载文件并将其通过解析器发送时:initWithNSURL,其中 NSURL 指向它正确解析的本地文件。

但是,如果我通过 NSURLConnection 下载相同的文件并使用 initWithData 将其传递给解析器,则解析会失败。我可以确认数据正在正确下载,因为如果我执行 NSString *temp = [NSString stringWithUTF8String:[downloadedData bytes]]; 输出的字符串是正确的。我有人觉得有时与沿线的某个地方进行编码有关,有什么想法吗?

最佳答案

我的 friend 负责解析器工作, NSString* xmlData = [[NSString alloc] initWithData:responseData 编码:NSUTF8StringEncoding];

xmlData 应该看起来像
美国广播公司 我的 friend 只需分析字符串,就可以了

我使用 libxml2 来解析 xml

xmlTextReaderPtr reader = xmlReaderForMemory([data bytes], [data length], NULL, NULL,             (XML_PARSE_NOBLANKS | XML_PARSE_NOCDATA | XML_PARSE_NOERROR | XML_PARSE_NOWARNING));

if (reader != NULL) {
ret = xmlTextReaderRead(reader);
while (ret == 1) {
const xmlChar *name, *value;

name = xmlTextReaderConstName(reader);
if (name == NULL)
name = BAD_CAST "--";
NSString *Name = [NSString stringWithCString:(const char*)name encoding:NSUTF8StringEncoding];

value = xmlTextReaderConstValue(reader);
if (value == NULL)
value = BAD_CAST "\n";
NSString *Value = [NSString stringWithCString:(const char*)value encoding:NSUTF8StringEncoding];
NSLog("%d %d %@ %d %@",
xmlTextReaderDepth(reader),
xmlTextReaderNodeType(reader),
Name,
xmlTextReaderIsEmptyElement(reader),
Value);



ret = xmlTextReaderRead(reader);
}
xmlFreeTextReader(reader);
}

结果也是正确的

关于iphone - 与 NSData 一起使用时 NSXML 解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8779236/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com