1

抽象file parserCFC を作成しました。これは、ファイル システムからファイルを読み取るときに必要ないくつかの一般的なタスクを抽象化したものです。

上記のコンポーネントの 1 つの子は、XML ファイルを解析するためのもので、coldfusion XML ドキュメントを返します。これですべてが完全に機能しますが、私が理解できないことの 1 つは、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