【发布时间】:2013-04-10 11:47:50
【问题描述】:
我有以下通过 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] 调用捕获,则应该是这种情况)。
那么,问题来了:我怎样才能获取上面的输出(以便我可以用它来向我的用户显示相关消息)?
非常感谢!
【问题讨论】:
标签: objective-c cocoa nserror nsxml nsxmldocument