我有以下的辅助功能通过XSLT转换XML:收集NSXMLDocument报警输出
- (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;
}
它正常工作,但有一个轻微的怪癖,我可以使用援助。
当我尝试使用XSLT功能是未知NSXMLDocument(比如,EXSLT的node-set()
),我得到在Xcode输出类似下面 - 第一线,特别是利益:
xmlXPathCompOpEval: function node-set not found
XPath error: Unregistered function runtime
error: element for-each
Failed to evaluate the 'select' expression.
很酷;这正是我所期望的。
然而,我感兴趣的是,输出不包含任何地方的"Error: "
(如果输出已被我的[xmlDocErr localizedDescription]
调用捕获,应该是这种情况)。
所以,这里的问题:我怎样才能抓住上述输出(以便我可以用它来显示相关消息给我的用户)?
非常感谢!
太棒了,@SimonM - 感谢您的挖掘。我会玩,看看我想出了什么。 – ABach