Iphone 如何在objective-c中提供名称空间以使用xpath查询

Iphone 如何在objective-c中提供名称空间以使用xpath查询,iphone,objective-c,parsing,namespaces,xml-parsing,Iphone,Objective C,Parsing,Namespaces,Xml Parsing,我正在尝试在我的应用程序中使用xpath查询进行xml解析。在名称空间概念出现之前,我的工作几乎完成了。我总是正确地编写查询,但它会返回我数组中的0个对象。我在stackoverflow.com上尝试了许多博客和帖子,但没有一篇不起作用。我希望我的问题需要稍加修改,任何人都可以修改我的代码。 谢谢大家。 我想很多人试图证明我的问题是重复的,但这是不同的,因为没有一个问题对我的问题不起作用。请给我你的建议。你的回答对我的工作更有帮助。我想你是在用libxml和Matt Gallagher的可可包装

我正在尝试在我的应用程序中使用xpath查询进行xml解析。在名称空间概念出现之前,我的工作几乎完成了。我总是正确地编写查询,但它会返回我数组中的0个对象。我在stackoverflow.com上尝试了许多博客和帖子,但没有一篇不起作用。我希望我的问题需要稍加修改,任何人都可以修改我的代码。 谢谢大家。
我想很多人试图证明我的问题是重复的,但这是不同的,因为没有一个问题对我的问题不起作用。请给我你的建议。你的回答对我的工作更有帮助。

我想你是在用libxml和Matt Gallagher的可可包装纸吗?(在问题中输入您正在使用的第三方库很有帮助。)

当我这样做的时候,我修改了Matt的代码,以便
PerformXPathQuery
使用一个额外的参数,一个名称空间的NSDictionary。(其他函数,如
PerformXMLXPathQuery
也接受此参数,并传递对象。)

然后,在
PerformXPathQuery
中,在创建上下文后,我注册了名称空间,因此:

if (namespaces != nil)
{
    for (NSString *key in namespaces) 
    {
        xmlXPathRegisterNs(xpathCtx, (const xmlChar *)[key UTF8String], (const xmlChar *)[[namespaces objectForKey:key] UTF8String]);
    }
}

谢谢你的回答。你能提供一些关于名称空间的更多信息吗?我正在使用libxml2框架以及xpathquery.m实现类。LarsH对你的另一个问题的回答中有关于它的信息。正如他所说,您需要修改Xpath查询,以便为每个标记使用前缀。然后,您必须将该前缀注册到XML中的名称空间URL:您可以使用我的代码。以他为例,使用我的代码,您将传入一个NSDictionary,其中包含一个项,key
imsq
,value
http://www.imsglobal.org/xsd/imsqti_v2p1
@Amorya你能看看这里吗