我有以下用于通过 XSLT 转换 XML 的辅助函数:
- (NSXMLDocument *)transform:(NSString *)xml :(NSString *)xslt
{
NSError *xmlDocErr = nil;
NSXMLDocument *transformedXmlDoc = nil;
NSXMLDocument *xmlDoc = [[NSXMLDocument alloc]
initWithXMLString:xml
options:NSXMLDocumentValidate
error:&xmlDocErr];
if (xmlDocErr) {
NSLog(@"Error: %@", [xmlDocErr localizedDescription]);
}
else {
transformedXmlDoc = [xmlDoc objectByApplyingXSLTString:xslt
arguments:nil
error:&xmlDocErr];
if (xmlDocErr) {
NSLog(@"Error: %@", [xmlDocErr localizedDescription]);
}
}
return transformedXmlDoc;
}
它按预期工作,但是我可以使用帮助来解决一个小问题。
当我尝试使用 NSXMLDocument 未知的 XSLT 函数(例如EXSLT的node-set()
)时,我在 Xcode 中得到类似于以下内容的输出 - 特别是第一行是有趣的:
xmlXPathCompOpEval:未找到函数节点集
XPath 错误:未注册的函数运行时
错误:每个元素
无法评估“选择”表达式。
这很酷; 这正是我所期望的。
然而,对我来说有趣的是输出不包含"Error: "
任何地方(如果该输出已被我的[xmlDocErr localizedDescription]
调用捕获,则应该是这种情况)。
那么,问题来了:我怎样才能获取上面的输出(以便我可以用它来向我的用户显示相关消息)?
非常感谢!