我一直在尝试使用KissXML和GDataXml项目执行xpath 1.0字符串函数 concat()但没有成功(总是评估为无结果)。这些在W3C规范中记录为here。
请注意,非功能xpath的评估正确。
任何人都可以使用libxml2和/或iOS平台上面的XML项目来确认是否支持字符串函数,例如concat()substring()等?如果没有,是否有任何方法可以使用xpath字符串函数(如concat())查询iOS上的xml文档?
更新
以下是使用KissXML进行测试的片段。我的简单XML结构如下。目标是连接第一个和姓氏。
<?xml version="1.0"?>
<entity>
<properties>
<keyValue>
<key>firstname</key>
<value>John</value>
</keyValue>
<keyValue>
<key>surname</key>
<value>Smith</value>
</keyValue>
</properties>
</entity>
来源:
NSError *error;
NSString *testData = @"<?xml version=\"1.0\"?><entity><properties><keyValue><key>firstname</key><value>John</value></keyValue><keyValue><key>surname</key><value>Smith</value></keyValue></properties></entity>";
DDXMLDocument *kDoc = [[DDXMLDocument alloc] initWithXMLString:testData options:0 error:&error];
NSArray *test = [kDoc nodesForXPath:@"concat(//keyValue[key='firstname']/value,//keyValue[key='surname']/value)" error:&error];
我还尝试了一个带有静态字符串的简单xpath作为一个简单的函数测试:
NSArray *test = [kDoc nodesForXPath:@"concat('Hello', ' ', 'World')" error:&error];
但这也无法返回任何结果。
谢谢!