使用gdata xml解析带有名称空间的xml [英] parse xml with namespaces with gdata xml

查看:216
本文介绍了使用gdata xml解析带有名称空间的xml的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发一个ios应用程序,我正在使用gdataxml解析我的xml,但我做错了,我的nslog为空

i am developping an ios application and i am parsing my xml with gdataxml, but i am doing it wrong, my nslog is null

NSError *error = nil;
GDataXMLDocument *xmlResult = [[GDataXMLDocument alloc] initWithData:data options:0 error:&error];
if (error) {
    NSLog(@"%@",error);
}

NSLog(@%@,xmlResult.rootElement);
我的根元素是完美的,错误是tempArray

NSLog(@"%@",xmlResult.rootElement); my root element is perfect, the error is with tempArray

NSArray *tempArray = [xmlResult nodesForXPath:@"//message/error/value" error:&error];

NSLog(@mon array%@,tempArray);

NSLog(@"mon array %@",tempArray);

我的数组为空,

我的xml是这样的:

<message xmlns="http://.....Api" xmlns:i="http://www.w3.org/....">
<error i:nil="true"/>
<value>

我觉得我的问题与命名空间有关,但我不知道怎么办?

i am sur that my problème is with the namespace, but i don't how to do it ?

感谢您的回答

推荐答案

使用GDataXMLNode进行一些测试后,这是我的答案:

After some testing with GDataXMLNode, here is my answer:

NSArray *tempArray = [xmlResult nodesForXPath:@"//_def_ns:message/_def_ns:error/_def_ns:value" error:&error];

您可以在GDataXMLNode.h中看到此评论:

You can see this comment in GDataXMLNode.h:

// This implementation of nodesForXPath registers namespaces only from the
// document's root node.  _def_ns may be used as a prefix for the default
// namespace, though there's no guarantee that the default namespace will
// be consistenly the same namespace in server responses.

它表示您实际上可以使用 _def_ns 作为命名空间。但是,如果文档中还有其他名称空间,您也可以设置自己的名称空间。

It states that you can actually use _def_ns as your namespace. However, you can also set your own namespace in case there are other namespaces in your document.

NSDictionary *myNS = [NSDictionary dictionaryWithObjectsAndKeys:
                      @"http://.....Api", @"ns1",
                      @"http://.....Other_Api", @"ns2", nil];
NSArray *tempArray = [xmlResult nodesForXPath:@"//ns1:message/ns1:error/ns1:value" namespaces:myNS error:&error];

这篇关于使用gdata xml解析带有名称空间的xml的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆