我创建了一个抽象的file parser
cfc。听起来,这抽象了我从文件系统读取文件时所需的一些常见任务。
所述组件的一个子组件用于解析 XML 文件并返回一个冷融合 XML 文档。现在这一切都很完美,但是,我无法弄清楚的一件事是如何明确定义 xml 文档的返回类型,这是我热衷于执行的。
负责返回 XML 文档的方法如下:
public coldfusion.xml.XmlNodeList function parse(string filePath = "", boolean isCaseSensitive = false, string validator = "")
{
super.parse(arguments.filePath);
var data = getData();
if (len(arguments.validator)) {
setDocument(xmlParse(data, arguments.isCaseSensitive, arguments.validator));
} else {
setDocument(xmlParse(data, arguments.isCaseSensitive));
}
return getDocument();
}
可以看到返回类型是coldfusion.xml.XmlNodeList
. 我已经设法通过使用以下客户端代码来解决这个问题。
<cfscript>
factory = new Library.parser.Factory();
parser = factory.getParser("XmlFileParser");
xmlDoc = parser.parse("/var/www/development/Framework/test/testfile.xml");
/** XMLDoc is now a coldfusion document object **/
writeDump(xmlDoc);
writeDump(getMetadata(xmlDoc).getName()); /** outputs coldfusion.xml.XmlNodeList **/
</cfscript>
这是不正确的,我得到的错误是:
The value returned from the parse function is not of type coldfusion.xml.XmlNodeList.
我错过了一些非常简单的东西吗?我应该这么在意吗?
编辑:
添加了 getDocument 方法(如您所见,它的返回类型为“any”)
public any function getDocument()
{
return variables.document;
}