1

我创建了一个抽象的file parsercfc。听起来,这抽象了我从文件系统读取文件时所需的一些常见任务。

所述组件的一个子组件用于解析 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;
}
4

1 回答 1

6

是的。根据文档,您想要的 XML 的返回类型是......错误......“XML”。

于 2012-10-03T18:23:15.207 回答