2012-10-03 87 views
1

我創建了一個摘要file parser cfc。這聽起來像是從文件系統中讀取文件時所需的一些常見任務。ColdFusion XML文檔返回類型

該組件的一個子組件用於解析XML文件並返回一個coldfusion 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方法(你可以看到有 「任何」 的返回類型)

public any function getDocument() 
{ 
    return variables.document; 
} 

回答

6

沒錯。根據the docs,您希望用於XML的返回類型是......錯誤...「XML」。

+0

+1哈哈,多麼尷尬,當然我看起來一定是錯過了它。在我的辯護中,我確信這是某種組件類型。 – AlexP